由JavaScript更新asp.net的MVC禁用文本框不发表新价值(asp.net mvc di

2019-07-29 06:17发布

我使用了我的看法强类型的模型。 我有一个残疾的文本框,它的值我更新使用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");

在上面的操作方法,但我已经想通它没有工作。

任何线索,提示?

谢谢你的时间....

Answer 1:

HTML输入元素,例如具有文本框disabled="disabled"属性的表单提交时绝不会发送他们的价值观到服务器。 如果你想将值发送给服务器,同时还对其进行更改禁用的用户,你可以使文本框readonly

<%= Html.TextBoxFor(model => model.TotalAmount, new { @readonly = "readonly" }) %>


Answer 2:

残疾人输入从未在一个形式发送提交,请尝试使用readonly属性,而不是或隐藏的输入



Answer 3:

残疾人领域没有得到公布。 尝试有隐藏的表单字段,将值发送到服务器,并设置两个总金额和隐藏的表单字段。 在服务器上,使用隐藏字段,而不是价值。

在一个侧面说明,因为这看起来像订单总额,这是我会recalcuate在服务器上,而不是开放的人盗号的HTML的可能性,并让他们的产品的折扣。

编辑:其他的点,我已经忘记了只读属性。 这也可以工作。



Answer 4:

如果你改变它使用readonly ,而不是disabled ,那么这应该给你相同的功能,但后期的价值。



Answer 5:

浏览器不张贴后的值在禁用输入控件,因为你已经发现。 可能是解决这个最简单的方法是钩住表单提交,并作为表单提交重新启用输入; 用户将不会有机会编辑值,它应该得到贴有该请求的其余部分。

我认为最后一个问题描述的那样:请检查出来:

检索ASP的值:文本框



文章来源: asp.net mvc disabled text box updated by javascript does not post new value