假設我在登錄字段中輸入'[email protected]'和'密碼'。ASP.net MVC2。填充模型不回到控制器
AuthModel.cs中的數據註釋返回值未填充。因此,html表單中的數據永遠不會填充正在拋出的模型。
在我的迷人之處,我昨天在關閉解決方案之前做了很多匆忙的修改,沒有測試我所做的修改。因此,我不知道我改變了什麼來打破這一點。
如果我需要發佈任何東西讓我知道。
AuthController.cs
...
using FCX.Models.Auth;
...
// GET: /auth/login
[HttpPost]
public ActionResult Login(Login model)
{
if (ModelState.IsValid)
{
...
AuthModel.cs
public class AuthModel
{
public Login Login { get; set; }
public ForgotPassword ForgotPassword { get; set; }
public Register Register { get; set; }
}
...
public class Login
{
[Required
(ErrorMessageResourceName = "Login_Error_HandleRequired",
ErrorMessageResourceType = typeof(Resources.Auth))]
[Email(ErrorMessage="Invalid Email")]
public string Handle { get; set; }
[Required
(ErrorMessageResourceName = "Login_Error_PasswordRequired",
ErrorMessageResourceType = typeof(Resources.Auth))]
public string Password { get; set; }
public bool Memory { get; set; }
}
而且Index.aspx的是登錄表單。
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Templates/FullColumn.Master" Inherits="System.Web.Mvc.ViewPage<FCX.Models.Auth.AuthModel>" %>
...
<% Html.EnableClientValidation(); %>
<%=Html.ValidationSummary() %>
<% using (Html.BeginForm("login", "auth"))
{ %>
<div id="login-block" class="entry-block">
<h4>
Sign in</h4>
<ul>
<li>
<label for="Login_Handle">
Email Address</label><%=Html.TextBoxFor(Model => Model.Login.Handle, new { @class = "txt-input" })%></li>
<li>
<label for="Login_Password">
Password</label><%=Html.PasswordFor(Model => Model.Login.Password, new { @class = "txt-input" })%></li>
<li>
<%=Html.CheckBoxFor(Model => Model.Login.Memory, new { @class = "left-input" })%><label
for="Login_Memory" class="right-label">Keep me logged in</label></li>
<li>
<button type="submit" name="Login.Submit" value="1">
Sign in</button></li>
</ul>
</div>
<% } %>
在AuthController.cs,我改變登錄(登錄模式)登陸(AuthModel模型),改變從(例如)model.EmailAddress所有的內部引用model.Login.EmailAddress和工作的罰款。 仍試圖找出爲什麼上述方法工作了一段時間,然後就停止工作。 – castis 2010-10-27 19:42:29