ValidationMessageFor用于不同的对象

时间:2012-11-20 17:55:43

标签: asp.net-mvc razor

我正在使用mvc4,在我看来我有一个声明

        @model IEnumerable<UserDisplay>
相同的视图中我想要一个带有“创建”帖子的表单,用于不同的对象类型名称“评论”

如何使用EditorFor和ValidationMessageFor?因为模型是不同类型的。

这不起作用

   @using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
    <legend>Review</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.Info) 
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Info)
        @Html.ValidationMessageFor(model => model.Info)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.FromId)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.FromId)
        @Html.ValidationMessageFor(model => model.FromId)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.ToId)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.ToId)
        @Html.ValidationMessageFor(model => model.ToId)
    </div>

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

}

2 个答案:

答案 0 :(得分:0)

您可以使用包含两个对象的视图模型。

public class MyViewModel
{
    public IEnumerable<UserDisplay> { get; set; }
    public Review Review { get; set; }
}

然后视图中的模型声明变为:

@model TheNamespace.For.MyViewModel

这将允许您使用@Html.EditorFor@Html.ValidationMessageFor助手。

答案 1 :(得分:0)

为该表单创建一个部分视图,该视图使用所需类型的@model声明,然后使用@Html.Partial("mySubFormView")。不要在视图中混合模型类型,这会让生活变得太复杂。