我想对创建,编辑和详细信息视图使用相同的部分视图,以避免重复实体的字段集结构。然后,根据哪个视图呈现局部视图,我想在我的fieldset周围的div中添加一个“只读”类,并使用css或jQuery在客户端上将实际输入字段设置为只读,或者随你。如何从我的Razor视图中指定我需要将此类添加到“item-details”div?
<div class="item-details">
<fieldset>
<legend>Product Details</legend>
@Html.HiddenFor(model => model.DetailItem.ProductId)
<div class="editor-label">
@Html.LabelFor(model => model.DetailItem.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DetailItem.Name)
@Html.ValidationMessageFor(model => model.DetailItem.Name)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
</div>
答案 0 :(得分:1)
我通常会在模型上有一个变量来指示您的数据是否可编辑,并使用它:
<div class="item-details @(Model.IsReadOnly ? "read-only" : "")">
但是,如果您没有在模型上使用它,则可以使用ViewBag
。在您的父视图中:
@{
ViewBag.IsModelReadOnly = true;
}
在您的局部视图中:
<div class="item-details @(ViewBag.IsModelReadOnly ? "read-only" : "")">
您的只读视图的html输出将是
<div class="item-details read-only">
然后,您可以通过jQuery访问div并执行您需要的操作:$(".read-only")...
答案 1 :(得分:0)
为什么不使用
@ Html.DisplayFor(model =&gt; model。[你想要展示的whatEver属性])