我正在使用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>
}
答案 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")
。不要在视图中混合模型类型,这会让生活变得太复杂。