2

即使我使用 MVCConrib 的ModelStateToTempData ,我也遇到了重定向后不显示验证消息的问题。我是否忽略了一些基本的东西?

[ModelStateToTempData]
public class AccountController : BaseController
{
    public ActionResult LogOn(string email, string password, string returnUrl)
    {
        if (!ValidateLogOn(email, password))
        {
            return RedirectToAction("Index", "AnotherController");
        }

        //other stuff
    }

private bool ValidateLogOn(string email, string password)
{
    if (!_userTask.ValidateUser(email, password))
    {
        ModelState.AddModelError("message", "The email or password provided is incorrect.");
    }

    return ModelState.IsValid;
}
}

看法:

   <li>
        <label for="email">E-mail</label>
        <%= Html.TextBox("email")%>
        <%= Html.ValidationMessage("message") %>
    </li>  
4

3 回答 3

1

您是否使用 [ModelStateToTempData] 装饰两个控制器?

詹姆士

于 2009-07-14T21:12:43.943 回答
0

确定在视图中显示验证消息吗?

于 2009-07-14T20:47:41.107 回答
-3

如果 ModelState 中有任何错误,则不应重定向到任何其他控制器。如果 ModelState 中存在错误,则无法导航到其他控制器 - 最好在成功时重定向,而不是在失败时重定向。

只需检查 ModelState 是否包含任何错误并返回您收到请求的视图。

 if (!ValidateLogOn(email, password))
 {
     return View("Index");
 }
于 2009-07-14T21:20:01.027 回答