如果下拉值更改为某个值而不使用帮助程序或javascript ,是否可以动态disable
或制作TextBoxFor readonly
?
Razor查看
<div class="form-group">
@Html.LabelFor(m => m.TypeId, new { @class = "col-md-2 control-label" })
<div class="col-md-4">
@Html.DropDownListFor(m => m.TypeId, new SelectList(ViewBag.TypesDDL, "TypeId", "Name"), new { @class = "form-control" })
</div>
@Html.LabelFor(m => m.TypeOthers, new { @class = "col-md-2 control-label" })
<div class="col-md-4">
@if (Model.TypeId == "Others") {
@Html.TextBoxFor(m => m.TypeOthers, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.TypeOthers, "", new { @class = "text-danger" })
}
</div>
</div>
在上面的代码中,如果TypeOthers TextBoxFor
等于TypeId DropDownListFor
,我使用if语句显示Others
但是在加载后这不起作用,如果我更改了TypeId
的下拉值不是Others
TypeOthers TextBoxFor
未显示的内容。
我知道这可以通过使用javascript轻松完成,就像在下面的代码中一样,但我想知道是否可以通过使用razor
来完成。
$("#TypeId").change(function () {
if (document.getElementById("TypeId").value == "OTHERS") {
document.getElementById("TypeOthers").disabled = false;
} else {
document.getElementById("TypeOthers").disabled = true;
}
});
如果我不够清楚,请发表评论。
答案 0 :(得分:0)
我认为这样可以尝试这个
@{ object displayMode = (Model.Typedof) ? "Others" : new {disabled = "disabled" };
@Html.TextBoxFor(m=>m. TypeOther, "", displayMode)
}