如何在mvc中绑定到模型的相同属性的多个局部视图上应用验证?

时间:2014-02-22 05:48:56

标签: validation model-view-controller views partial partialviews

我是mvc的新手。我刚遇到一个问题。我创建了一个prtial视图,其中包含一个texbox,它绑定到模型中的属性。在该属性[必需]验证已应用。问题是当我在视图上多次渲染局部视图并在仅在一个文本框中填充数据后clik提交但是验证同时适用于所有局部视图。我想要的是[必需]验证应该分别适用于所有部分视图/文本框。

我的部分观点是

@Html.TextboxFor(m=>m.Name)

模型是

[Required]
public string Name(get; set;}

我的观点有多个部分观点

 @Html.Partial(_MyPartialView)
 @Html.Partial(_MyPartialView)
<input Type="submit" value="click"/>

当我在第一部分上填充数据时,验证也会同时自动应用于第二部分视图。

希望你们能理解这个前提。如果有人可以提供帮助,我会非常感激,因为我因为这个问题而被困了几天。非常感谢提前。

1 个答案:

答案 0 :(得分:0)

很难理解你想要做什么,因为如果你有一个包含一个名为NAME的属性的模态,那么我怎么理解你有一个表单,在这个表单中你只渲染相同的局部视图,只有你拥有的属性,那么你期望在POST方法上获得什么? 我应该改变你的模态以获得一个像这样的字符串列表:

public class Model
{
  public IList<Name> Names{get;set;}
  public Model()
  {
        Names=new List<Name>();
  }
}
public class Name
{
    [Required]
    public string FirstName{get;set;
}

现在看来你可以做这样的事情: 视图:

@{
   Layout=null;
}
  @model Model
   @using (Ajax.BeginForm("Action", "Controller", null,
                        new AjaxOptions { HttpMethod = "POST"} ))
 {
    @Html.TextBoxFor(c=>c.Names[0].FirstName)
    @Html.TextBoxFor(c=>c.Names[1].FirstName)
    //and so on 

   <input type="submit" value="submitForm"/>
}

不要忘记包含mvc客户端验证所需的所有脚本。希望这会对你有所帮助。