我需要视图上的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 ......
但这个解决方案看起来有点复杂......
感谢您的任何建议!
答案 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');