0

我正在使用 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>

}

4

2 回答 2

0

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

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

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

@model TheNamespace.For.MyViewModel

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

于 2012-11-20T18:16:22.857 回答
0

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

于 2012-11-20T18:16:43.963 回答