如何在 ASP.NET MVC 中提交禁用的输入?

IT技术 c# .net javascript asp.net-mvc
2021-03-04 19:49:47

如何在 ASP.NET MVC 中提交禁用的输入?

6个回答

你不能做场readonly="readonly"而不是disabled="disabled"吗?只读字段值将提交给服务器,同时用户仍不可编辑。一个SELECT标签是只有一个例外。

readonly 有效,但不会使该字段变灰。这是我正在使用的一个示例:<%: Html.TextBoxFor(model => model.p1, new { @readonly = "readonly" }) %>如何将其灰化,使其在视觉上看起来不可编辑。更好的是我们可以使用类似于 LabelFor 的东西,我尝试过 LabelFor 但它只获取 DisplayName ....
2021-04-25 19:49:47
4 年做 .net asp 了,我从来不知道禁用的输入不会被邮寄回来……那是怎么通过我的?只需为禁用的选择包含一个隐藏字段,并将其全部排序。(即使 ID 在表单上重复,这是不允许的)
2021-04-25 19:49:47
这也不适用于type="checkbox"输入
2021-04-29 19:49:47
我正在尝试使用单选按钮做同样的事情,但 readonly 似乎对它们不起作用。
2021-05-01 19:49:47

谢谢大家:

我解决这个问题的方式:

document.getElementById("Costo").readOnly = true;
document.getElementById("Costo").style.color = "#c0c0c0";

笔记:

我在答案中得到了这些信息,但我得到了编辑。

readonly 似乎是要走的路。它不会做奇怪的事情,例如不将控件放回原处但不允许对其进行编辑。穆哈格拉西亚斯!
2021-04-22 19:49:47
这对我来说不太适用(通过这个 SO 链接弄清楚了)。这有效:textBox.Attributes.Add("readonly", "readonly");解释在链接中
2021-04-28 19:49:47
要添加到 Michael Brennt 的评论中,如果您使用 jQuery,则第二行变为$("#textBoxId").css("color", "#c0c0c0").
2021-04-29 19:49:47
你编辑它很好,因为这对我来说更有意义。
2021-05-18 19:49:47

@ppumkin 在他对这个答案的评论中提到了这一点,但我想强调这一点,因为我无法找到有关从残疾人提交数据的其他资源<select>我也相信它与问题有关,因为选择不是<input>s,而是“输入”。

只需为禁用的选择包含一个隐藏字段,并对其进行排序。

例子:

@Html.DropDownListFor(model => model.SelectedID, ... , new { disabled = "disabled"}) @* Won't be posted back *@
@Html.HiddenFor(model => model.SelectedID) @* Will be posted back *@

注意:这会在页面上放置两个具有相同 ID 的标签,这不是真正有效的 HTML,可能会导致使用 javascript 时出现问题。对我来说,我有 javascript 来通过它的 html 设置下拉列表的值id,如果你把隐藏字段放在第一位,javascript 会发现它而不是select.

通常,如果我有一个“只读”字段但需要提交回服务器,我将禁用显示(或简单的文本),然后添加一个具有相同名称的隐藏字段。您仍然需要确保该字段实际上没有在服务器端修改——只是不要在你的操作中从模型更新它——但是如果有错误,模型状态仍然是准确的。

是的,我正在考虑做你正在建议的事情。但我将不得不处理更多的变量。我希望我的帖子可能会出现在谷歌中,人们不必受苦,寻找一个简单的解决方案。
2021-05-05 19:49:47
您的解决方案的一个问题是,如果 javascript 被禁用,它就会中断。注入隐藏字段服务器端没有这个问题。
2021-05-11 19:49:47

您还可以在表单提交之前使用这样的代码:

$(":disabled", $('#frmMain')).removeAttr("disabled");
如果你提交Ajax.BeginForm怎么办?
2021-05-01 19:49:47
绝对华丽的解决方案!
2021-05-02 19:49:47
看起来有点奇怪,但这是唯一对我有用的解决方案......
2021-05-03 19:49:47
针对提到使用只读而不是禁用的许多答案,我相信在许多情况下我们需要使用禁用,我在类似问题中阅读了大约 15 个答案,并选择了这个只是使用自己的 jQuery 过滤器来选择适当的元素来删除禁用属性,太棒了谢谢。
2021-05-05 19:49:47
我用过这个,不需要担心隐藏元素,不确定是否有任何缺点,除了可能由于js功能导致回发略有延迟
2021-05-15 19:49:47