我已将Required属性添加到Model类的一个属性中,如下所示 -
[Required(ErrorMessage="UserID should not be blank")]
[DisplayName("User Name")]
public string UserName { get; set; }
在我的视图中,继承了包含上述属性的类,我尝试将validaton应用于文本框,如下所示 -
<%= Html.TextBoxFor(model => Model.UserName, new { @class = "login-input", @name="UserName" })%>
<%= Html.ValidationMessageFor(model => Model.UserName)%>
但是,当我运行这个应用程序,并调用帖子(使用按钮单击),而不在文本框中输入任何内容;我没有验证文本框?
有人可以告诉我,禁止文本框验证的原因可能是什么?
提前致谢, KAPS
答案 0 :(得分:1)
更改模型=&gt; 模型 .UserName to model =&gt;的模型强> .UserName
答案 1 :(得分:1)
仅当HttpPost Action方法将类(包含属性UserName)作为其输入参数之一时,此方法才有效。
所以,如果您的代码是这样的:
public class User
{
public User() { } // Make sure the class has an empty constructor
[Required(AllowEmptyStrings = false, ErrorMessage="UserID should not be blank")]
[DisplayName("User Name")]
public string UserName { get; set; }
}
然后,以下操作方法将验证UserName:
[HttpPost]
public ActionResult AddUser(User user)
{
...
}
如果您的操作方法是这样的,它将不会考虑您的验证属性:
[HttpPost]
public ActionResult AddUser(string userName)
{
...
}
此外,model => Model.UserName
或model => model.UserName
没有任何区别。
答案 2 :(得分:1)
别忘了包括 MicrosoftMvcValidation.js MicrosoftAjax.js进入您的母版页。
正如Rashmi的逻辑所提到的 - 使用模型绑定来使验证工作。
[HttpPost]
public ActionResult AddUser(用户用户)
{
...
}
答案 3 :(得分:0)
尝试从Html.TextBoxFor
中删除'@ name =“UserName”'答案 4 :(得分:0)
答案 5 :(得分:0)
我没有提到post方法接收formcollection作为参数。我用包含属性的类替换了它。问题得到解决。 道歉。