我使用了我的看法强类型的模型。 我有一个残疾的文本框,它的值我更新使用JavaScript。 文本框使用此渲染
<%: Html.TextBoxFor(model => model.TotalAmount, new { disabled = "disabled"})%>
这使得与NAME和ID为“总金额”的文本框。 总金额也结合这一观点在我的模型的属性。
在视图中更新其值的JavaScript是这样的函数中:
document.getElementById('TotalAmount').value = {assigning new value here};
该函数被调用,我可以看到在禁用文本框中的值,当我在另一个可编辑的文本改变一些价值。 然而,当我张贴这种形式为我下面的操作方法:
[HttpPost]
public ActionResult Process (ProcessVM FormPostVM)
{
}
残疾人文本框属性[总金额]仍然有旧的价值,但我修改了编辑文本包含我输入的新值。 为什么禁用文本框不包含的JavaScript更新的价值?
我试着使用
ModelState.Remove("TotalAmount");
在上面的操作方法,但我已经想通它没有工作。
任何线索,提示?
谢谢你的时间....
HTML输入元素,例如具有文本框disabled="disabled"
属性的表单提交时绝不会发送他们的价值观到服务器。 如果你想将值发送给服务器,同时还对其进行更改禁用的用户,你可以使文本框readonly
:
<%= Html.TextBoxFor(model => model.TotalAmount, new { @readonly = "readonly" }) %>
残疾人输入从未在一个形式发送提交,请尝试使用readonly
属性,而不是或隐藏的输入
残疾人领域没有得到公布。 尝试有隐藏的表单字段,将值发送到服务器,并设置两个总金额和隐藏的表单字段。 在服务器上,使用隐藏字段,而不是价值。
在一个侧面说明,因为这看起来像订单总额,这是我会recalcuate在服务器上,而不是开放的人盗号的HTML的可能性,并让他们的产品的折扣。
编辑:其他的点,我已经忘记了只读属性。 这也可以工作。
如果你改变它使用readonly
,而不是disabled
,那么这应该给你相同的功能,但后期的价值。
浏览器不张贴后的值在禁用输入控件,因为你已经发现。 可能是解决这个最简单的方法是钩住表单提交,并作为表单提交重新启用输入; 用户将不会有机会编辑值,它应该得到贴有该请求的其余部分。
我认为最后一个问题描述的那样:请检查出来:
检索ASP的值:文本框
文章来源: asp.net mvc disabled text box updated by javascript does not post new value