首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有Required属性的模型不会为错误的用户输入显示任何错误消息

具有Required属性的模型不会为错误的用户输入显示任何错误消息
EN

Stack Overflow用户
提问于 2012-03-15 00:34:51
回答 3查看 2.7K关注 0票数 2

我有一个应用程序,其中有一个用户和零售商帐户。我想实现零售商注册表的验证。我为零售商做了一个具有必要内涵的模型,但页面仍然没有显示任何错误输入的消息。任何建议,我可以如何实现我的目标。即时通信使用Asp.net MVC

代码语言:javascript
复制
[PropertiesMustMatch("Password", "ConfirmPassword", ErrorMessage = "The password and confirmation password do not match.")]
public class RegisterStore
{
    [Required(AllowEmptyStrings = false, ErrorMessage = "Store Name is Required")]
    [DataType(DataType.Text)]
    [Display(Name = "Store Name")]
    public string Store_Name { get; set; }
  .
  .       
    Similarly other properties ...
  .
  .

}

View的代码如下所示

代码语言:javascript
复制
 <h2>Create a Store Account</h2>
<p>
    Use the form below to create a new account. 
</p>
<% using (Html.BeginForm())
   {%>
    <%: Html.ValidationSummary(true) %>

    <fieldset>
        <legend>Retailer Information</legend>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.Store_Name) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.Store_Name) %>
            <%: Html.ValidationMessageFor(model => model.Store_Name) %>
        </div>
        .

        ... Similar DIVs for other properties ....
        .
        .
        .
        .

        <p>
            <input type="submit" value="Next" />
        </p>
    </fieldset>

<% } %>

控制器的代码如下所示

代码语言:javascript
复制
  [HttpPost()]
    public ActionResult RetailerRegisteration(RegisterStore storeModel)
    {
        //ViewData["genders"] = Genders;
        Debug.WriteLine("Started RetailerRegisteration");
        if (string.IsNullOrEmpty(storeModel.UserName))
            ModelState.AddModelError(string.Empty, "Please enter Username");     
        if (string.IsNullOrEmpty(storeModel.Store_Name))
            ModelState.AddModelError(string.Empty, "Please enter a store name");
        if (!string.IsNullOrEmpty(storeModel.Email) || !storeModel.Email.Contains("@"))
            ModelState.AddModelError(string.Empty, "Please enter a valid e-mail address!");
        if (string.IsNullOrEmpty(storeModel.Password))
            ModelState.AddModelError(string.Empty, "Please enter a Password");
        if(! storeModel.Password.Equals(storeModel.ConfirmPassword))
            ModelState.AddModelError(string.Empty, "The Passwords must match");

        if (ModelState.IsValid)
        {
           ... Create Store Account ....

        }
EN

回答 3

Stack Overflow用户

发布于 2012-03-15 01:11:59

尝试使用<%: Html.ValidationSummary(false) %>显示所有错误。

另外,请参考this问题。

票数 2
EN

Stack Overflow用户

发布于 2012-03-15 02:10:29

您是使用客户端验证还是仅使用服务器端验证?

如果你正在检查服务器端,你会在POST时检查ModelState.IsValid吗?在您检查此属性之前,验证不会实际触发。

票数 2
EN

Stack Overflow用户

发布于 2012-04-20 02:41:22

您使用的是MVC2还是MVC3?这两者之间有细微的区别。在这两种情况下,都必须包含适当的jQuery或Ajax验证JavaScript脚本才能获得客户端验证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9706070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档