基于相同模型的多个部分视图

时间:2012-02-21 13:38:48

标签: asp.net-mvc asp.net-mvc-3

我有这样的事情:

主要观点:

@model AuthorViewModel
@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { id="someId"        })) {

 @Html.LabelFor(model => model.Name);
 @Html.EditorFor(model => model.Name);
 @Html.ValidationMessageFor(model => model.Name);

 <label> Book </label>
 @{Html.RenderPartial("_BookView", new BookViewModel());}
 <label>One more book...</label>
 @{Html.RenderPartial("_BookView", new BookViewModel());}
}

部分观点:

@model BookViewModel
@Html.LabelFor(model => model.Title);
@Html.EditorFor(model => model.Title);
@Html.ValidationMessageFor(model => model.Title);

AuthorViewModel:

public class AuthorViewModel
{
    [Required]
    [DataType(DataType.Text)]
    public String Name { get; set; }
}

BookViewModel:

public class BookViewModel
{
    [Required]
    [DataType(DataType.Text)]
    public String Title { get; set; }
}

因此,当它呈现时 - 看起来是正确的,但所有书籍的验证都是一样的。我需要为作者提供大量书籍(比如动态添加它们),每个书籍必须是独立的并且“可以验证”。

我该如何表现?

3 个答案:

答案 0 :(得分:2)

我的BookViewModel会收集AuthorViewModel。这样,名称和ID将是唯一的。

答案 1 :(得分:0)

您可以更新AuthorViewModel以获得BookViewModel列表。在视图中,遍历列表并为书签创建必要的字段。

答案 2 :(得分:0)

您正在尝试将绑定建模到列表。 它的实现非常简单,请在这里查看Phil Haacks post。 他使用旧的mvc视图,但同样的想法适用于剃须刀