MVC2中的文本框验证

时间:2010-02-02 09:29:35

标签: asp.net-mvc validation

我已将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

6 个答案:

答案 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.UserNamemodel => 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作为参数。我用包含属性的类替换了它。问题得到解决。 道歉。