视图上的只读和可更新字段(RAZOR),从模型中填充

时间:2014-07-04 11:39:35

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

我需要视图上的readonly和updateable字段(RAZOR),从模型中填充。 例如:

public class Doc
{
    [UIHint("Readonly")]
    public int? TotalGoodsNumber { get; set; }
    #....
}

模板Readonly.cshtml:

<span>@Model</span>

工作正常。直到我想在客户端通过jquery更新此字段。 Span没有id!

是否可以按模型字段名称在模板中生成id?

当然我可以使用带有id的div包装此span,我手工制作。不是自动的。 但是我有很多只读字段......这不是好解决方案......

或者我可以为模板添加隐藏属性:

@Html.HiddenFor(m => m)

现在我有这样生成的html:

    <div class="editor-label">
        <label for="TotalGoodsNumber">Всего наименований товаров</label>
    </div>
    <div class="editor-field">            
    <span>8</span>

    <input data-val="true" data-val-number="Значение должно быть числовым." data-val-required="Обязательное поле." id="TotalGoodsNumber" name="TotalGoodsNumber" type="hidden" value="8" />
            <span class="field-validation-valid" data-valmsg-for="TotalGoodsNumber" data-valmsg-replace="true"></span>
    </div>

并且可以尝试通过隐藏字段的id来选择必要的跨度来更新文本。因为此跨度位于字段之前,其id =“TotalGoodsNumber”。 而且我认为可以编写可以更新span文本的jquery ......

但这个解决方案看起来有点复杂......

感谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

这是一种做你要求的方法:

1)确保您的隐藏字段具有可预测的ID(这将默认为属性名称,但我喜欢明确设置)

 @Html.HiddenFor(m => m, new { @id = "TotalGoodsNumber" });

2)为了便于选择,还可以span id

 <span id="TotalGoodsNumberDisplay">@Model</span>

3)使用jQuery更改值:

 $('#TotalGoodsNumber').val('foobar');
 $('#TotalGoodsNumberDisplay').html('foobar');