【问题标题】:ASP.NET MVC validation in weakly typed views弱类型视图中的 ASP.NET MVC 验证
【发布时间】:2023-03-26 08:38:02
【问题描述】:

我在验证非强类型视图上的数据时遇到问题。我正在该视图上更新来自 3 个不同模型的数据,并且我有适用于它们的验证方法,但我不知道如何显示验证消息。

我应该将验证消息放在哪里(对于强类型视图,我将它们放在 ModelState 中,我认为这在这种情况下没有意义),以及我应该如何显示它们(我怀疑我是否能够使用“validationmessagefor ”,也许是“验证消息”)?

【问题讨论】:

    标签: c# asp.net-mvc visual-studio validation


    【解决方案1】:

    在强类型中使用 Asp.net MVC 验证非常容易,但如果您有一个非强类型的视图,您仍然可以轻松完成。 假设您在控制器中有以下操作。

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Login(string userEmail, string password)
    {
        if (ValidateLogin(userEmail, password))
        {
                    //redirect
        }
        return View();
    }
    

    你的验证方法看起来像,

    private bool ValidateLogin(string userEmail, string password)
    {
        if (String.IsNullOrEmpty(userEmail))
        {
            ModelState.AddModelError("username", "You must specify a username.");
        }
    
    
        if (password == null || password.Length == 0)
        {
            ModelState.AddModelError("password",
                   String.Format(CultureInfo.CurrentCulture,
                   "You must specify a password."));
        }
    
        return ModelState.IsValid;
     }
    

    现在在您的视图中,在这种情况下 login.aspx 在您的视图文件夹中,您可以通过这种方式显示您的验证。

    <label for="useremail">User Email:</label>
    <%= Html.TextBox("useremail") %>
    <%= Html.ValidationMessage("useremail")%>
    

    除此之外,您还可以使用以下辅助方法显示验证摘要或仅显示通用方法。

    <%= Html.ValidationSummary(true, "Please correct the errors.") %>
    

    【讨论】:

    • 嗯,我就是这样做的(第一种方法,没有验证总结)。我调试并注意到验证消息已添加到模型状态,但我没有在我的视图中收到该消息:S。我一定是做错了什么,但不知道是什么:S.
    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    相关资源
    最近更新 更多