我有一个用于进入的剃须刀显示器。在一种情况下,我希望用户能够填充文本框,在另一种情况下,我想阻止用户填充它。我使用的代码如下:
@Html.TextBoxFor(model => model.Goop, new { @class = "text-box", maxlength = 2, onfocus = "javascript:this.select();" })
if (Model.Review.ReviewType.Equals("M"))
{
<script type="text/javascript">
$(function () {
$("#Goop").prop("disabled", true);
});
</script>
}
我试过这几种方式,jQuery(上面),CSS attribs,javascript,ASP.NET ......但都有相同的问题:当提交表单时,如果Goop文本框被禁用,则值对于模型中的Goop是Null。想法? 提前谢谢!
答案 0 :(得分:2)
如果没有jQuery,也许它不那么酷,但是当我在我的应用程序中执行此操作时,我会按照
的方式执行某些操作。if (Model.Review.ReviewType.Equals("M"))
{
@Html.DisplayFor(model => model.Goop)
@Html.HiddenFor(model => model.Goop)
}
else
{
@Html.TextBoxFor(model => model.Goop)
}
答案 1 :(得分:1)
如果禁用表单元素,则不会发布值。这就是它应该如何运作。
要解决此问题,您需要执行以下操作之一。您可以通过拦截提交方法在发布之前启用字段。除了禁用的控件之外,您还可以使用隐藏字段来存储数据。或者你可以假设控制器端的值。
顺便说一下,它应该是.prop("disabled", "disabled")
,它呈现为禁用=“禁用”,符合标准。