Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC3只读文本框,但必须过帐值_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 MVC3只读文本框,但必须过帐值

Asp.net mvc 3 MVC3只读文本框,但必须过帐值,asp.net-mvc-3,Asp.net Mvc 3,在MVC3中,有没有一种方法可以创建一个只读文本框,在该文本框中值会被发回 我(从本网站的其他人那里)尝试了以下内容: 但是,该值不会被POST'ed,检查它会得到NULL。 我使用一个文本框是为了设计样式,因为我认为它可以正确地发回。我在页面上有一个JScript来更新这个值,因此为什么能够返回它的POST'ed值很重要 我将开始考虑使用DisplayFor和HiddenFor对,但想知道是否有更优雅的解决方案。试试这个: @Html.TextBoxFor(m => m.Model.xx

在MVC3中,有没有一种方法可以创建一个只读文本框,在该文本框中值会被发回

我(从本网站的其他人那里)尝试了以下内容:

但是,该值不会被POST'ed,检查它会得到NULL。 我使用一个文本框是为了设计样式,因为我认为它可以正确地发回。我在页面上有一个JScript来更新这个值,因此为什么能够返回它的POST'ed值很重要

我将开始考虑使用DisplayFor和HiddenFor对,但想知道是否有更优雅的解决方案。

试试这个:

@Html.TextBoxFor(m => m.Model.xxxx, new {@class = "text-box single-line", @readonly = "readonly", onfocus = "this.blur()" })

试试这个。您似乎在@disabled中有一个打字错误

@Html.TextBoxFor(m => m.Model.xxxx, new { @disabled = "disabled", @class = "text-box single-line", @readonly = "readonly" })
因为用户无法编辑它,所以您的另一个选项是HiddenFor,然后您可以通过ViewModel提交该值

或者,您可以在页面加载而不是标记中禁用文本框,并根据需要使用Javascript或jQuery再次启用它(即编辑按钮或其他内容)

如您所述(和其他人),我将使用:

@Html.DisplayFor(m => m.Model.xxxx)


Html规范规定不应提交禁用的字段,因此您只能在需要更新JS中的值并提交的情况下使用readonly。使用CSS类使其看起来被禁用的readonly提供了更好的UI体验。或者,只需使用span加上隐藏输入

见:


“禁用的控件不可能成功。”和“成功的控件对于提交是“有效的”。

如果由于样式的原因需要文本框,您有两个选项:使用额外的隐藏字段,或者在JavaScript中序列化整个
表单
,并使用AJAX发布。只读是诀窍。最好使用只读而不是禁用,并且不必使用隐藏字段。
@Html.DisplayFor(m => m.Model.xxxx)
@Html.HiddenFor(m => m.Model.xxxx).