我需要在视图中显示评论列表。我已经为我的评论的Viewmodel类型创建了一个编辑器模板。我打电话给:
@Html.EditorFor(x => x.Comments)
循环并呈现个人评论。
现在,我还需要在列表中添加注释。添加到DB后,我需要使用jQuery将新的注释视图附加到当前列表。
我是否应该创建另一个部分视图来镜像EditorTemplate视图...或者首先在编辑器模板中的新视图上调用Html.RenderPartial?
希望有道理..
答案 0 :(得分:1)
每个视图(无论是否为部分视图)都有自己的html帮助器属性。使用此属性您可以将部分视图调用到任意深度。在您的情况下,我建议为评论创建显示模板,因为您正在显示它们而不是编辑它们。它在功能方面没有任何区别,但它违反了惯例。例如,这是接受IEnumerable
的注释的显示模板<%foreach(var x in Model){%>
<div> @x.CommentText</div>
<%} %>
然后你可以有一个局部视图渲染表格来添加新的评论,你可以把它放在另一个叫做评论的部分视图中接受类型评论的模型,例如
<%Html.BeginForm();%>
<div><%:Html.HiddenFor(x=>x.CommentID)%>
<%:Html.LabelFor(x=>x.CommentText)%>
</div>
<div>
<%:Html.TextAreaFor(x=>x.CommentText)%>
<input type='submit' value='save'/>
<%:Html.Endform();%>
我个人会从主视图(我从中调用Html.DisplayFor(x =&gt; x.Comments))调用此视图(呈现表单),因为它与显示注释列表不同。
答案 1 :(得分:0)
我只想创建一个部分视图:
@model SomeModel
@Html.EditorForModel()
如果需要return PartialView()
来自动作方法,请使用它。
答案 2 :(得分:0)
通过提供包含一条评论的IEnumerable模型,您可以变得懒惰并使用相同的模板。
jQuery提供了一种从AJAX响应中挑选出片段的方法。请参阅“加载页面片段”here。只需为您的一条评论添加一个选择器,然后将其添加到列表中。