如何从Razor视图呈现HTML属性

时间:2010-12-16 17:24:21

标签: asp.net-mvc asp.net-mvc-3 razor

我想对创建,编辑和详细信息视图使用相同的部分视图,以避免重复实体的字段集结构。然后,根据哪个视图呈现局部视图,我想在我的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>

2 个答案:

答案 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属性])