【问题标题】:asp.net mvc disabled text box updated by javascript does not post new value由javascript更新的asp.net mvc禁用文本框不发布新值
【发布时间】:2012-05-04 13:10:59
【问题描述】:

我正在为我的视图使用强类型模型。我有一个禁用的文本框,我使用 javascript 更新其值。使用 this 呈现文本框

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

这会呈现一个名称和 ID 为“TotalAmount”的文本框。 TotalAmount 也是我模型上绑定到此视图的属性。

在视图中更新其值的javascript在其函数中是这样的:

document.getElementById('TotalAmount').value = {assigning new value here};

该函数确实被调用,当我在另一个可编辑文本框中更改某些值时,我可以看到禁用文本框中的值。但是,当我将此表单发布到我的操作方法时,如下所示:

[HttpPost]
public ActionResult Process (ProcessVM FormPostVM)
{
}

禁用的文本框属性 [TotalAmount] 仍然具有旧值,但我修改的可编辑文本框包含我输入的新值。为什么禁用的文本框不包含 javascript 更新的值?

我尝试过使用

ModelState.Remove("TotalAmount");

在上面的操作方法中,但我已经认为它不起作用。

任何线索,提示?

感谢您的宝贵时间......

【问题讨论】:

  • 一分钟4个答案,全部正确。

标签: asp.net-mvc asp.net-mvc-3


【解决方案1】:

HTML 输入元素(例如具有disabled="disabled" 属性的文本框)在提交表单时永远不会将其值发送到服务器。如果您想将值发送到服务器同时仍然禁止用户更改它,您可以将文本框设为readonly:

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

【讨论】:

  • @Darin Dimitrov,你说“......永远不会将它们的值发送到服务器......”。这是一般规则还是特定于 MVC?您的解决方案也适用于文本框。 select 元素呢?
  • @Anar,不,这与 ASP.NET MVC 无关。这是基本的 HTML。包括select在内的所有输入元素都是如此。
  • 问题是,select 不支持readonly 属性。我找到了一种将下拉列表的值存储在隐藏元素中的解决方法。我不喜欢这种方法,但不幸的是,我将不得不将其用作最后的手段。
【解决方案2】:

禁用的输入永远不会在表单提交中发送,请尝试使用readonly 属性或隐藏输入

【讨论】:

    【解决方案3】:

    禁用的字段不会被发布。尝试有一个隐藏的表单域,它将值发送到服务器,并设置 TotalAmount 和隐藏的表单域。在服务器上,改为使用隐藏字段的值。

    附带说明,因为这看起来像订单总额,所以我会在服务器上重新计算,而不是打开有人破解 html 并获得产品折扣的可能性。

    编辑: 就其他人而言,我忘记了 readonly 属性。这也行。

    【讨论】:

      【解决方案4】:

      如果您将其更改为使用 readonly 而不是 disabled,那么这应该会为您提供相同的功能,但要发布值。

      【讨论】:

        【解决方案5】:

        正如您所发现的,浏览器不会将值返回到禁用的输入控件中。解决此问题的最简单方法可能是挂钩表单提交,并在提交表单时重新启用输入;用户将没有机会编辑该值,它应该与请求的其余部分一起发布。

        我认为上一期描述了它:请查看:

        Retrieving the value of a asp:TextBox

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-25
          • 2014-02-11
          • 2020-08-08
          • 2011-11-01
          • 2016-11-02
          • 2010-11-28
          相关资源
          最近更新 更多