如何在asp.net mvc中使用html helper创建只读文本?

Ken*_*hou 24 asp.net-mvc

我想在视图中禁用文本框.所以我使用以下代码:

<%= Html.TextBox("ID", Model.ID, new { readonly="true" })%>
Run Code Online (Sandbox Code Playgroud)

要么

<%= Html.TextBox("ID", Model.ID, new { enable="false" })%>
Run Code Online (Sandbox Code Playgroud)

它们都不起作用.什么是解决方案?

Bra*_*don 53

尝试

<%= Html.TextBox("ID", Model.ID, new { @readonly="readonly" })%>
Run Code Online (Sandbox Code Playgroud)

我不确定你是否必须使用4个参数的重载.您应该能够使用3的那个,但是您需要将@附加到readonly,因为readonly是C#中的关键字.将@readonly设置为readonly符合XHTML标准.


moo*_*000 7

尝试

<%= Html.TextBox("ID", Model.ID, null, new { @readonly="true" })%>
Run Code Online (Sandbox Code Playgroud)

代替

<%= Html.TextBox("ID", Model.ID, new { @readonly="true" })%>
Run Code Online (Sandbox Code Playgroud)

如果您查看文档,您可以看到第三个参数不是htmlAttributes,正如您可能预期的那样.

您需要使用带有四个参数重载.


Ika*_*aso 6

利用最新的API,您可以使用:

Web表单引擎:

<%= Html.TextBoxFor(m => m.ID, new { @readonly = "readonly" }) %>
Run Code Online (Sandbox Code Playgroud)

剃刀引擎:

@Html.TextBoxFor(m => m.ID, new { @readonly = "readonly" })
Run Code Online (Sandbox Code Playgroud)

干杯.


Pau*_*ett 5

请记住,禁用的 TextBox不会以html格式提交,而是只读取 TextBox.

MVC3 文档将签名显示为上面使用的Html.TextBox(字符串名称,对象值,对象htmlAttributes).


s0n*_*ica 5

如果您没有被迫在网页中显示只读文本框,请考虑使用@Html.DisplayFor 帮助程序:您的输出将是只读的(实际上它只是div中的文本)并且当引擎将模型绑定时将成为模型的一部分提交.