如何使Html.TextBox为只读或不可见?

时间:2014-03-27 09:04:14

标签: c# asp.net asp.net-mvc

完成nCb到MVC。我被要求为我的跑步俱乐部敲一个快速的联系管理系统。它基于MVC Contact Manager模板完成了所有工作:

http://www.asp.net/mvc/tutorials/older-versions/contact-manager/iteration-1-create-the-application-cs

我已将其改编为链接到俱乐部的SQL Server会员数据库。但是,它会在“编辑”表单上公开“成员”表的主键。我不介意它是可见的,但必须是只读的(尽管如果它不可见则会更好)。

为视图生成的标记是

<%= Html.TextBox("ID") %>

我尝试过添加只读,可见等属性但是虽然它会编译,但它会在渲染时爆炸。

<%= Html.TextBox("ID"); Visible = false %>

我很确定可以做到这一点,但我已经用尽了Google的点击率!

由于

爱德华

2 个答案:

答案 0 :(得分:2)

您可以指定HTML属性并将输入设置为readonly。这将添加适当的HTML标记,以使文本框只读:

<%= Html.TextBox("ID", "", new { @readonly = "readonly" }) %>

此方法使用Html.TextBox(String, Object, Object)重载,第一个参数是输入的名称,第二个参数是值,第三个参数是包含HTML属性的字典。

编辑:正如DGibbs指出的那样,readonly是一个保留关键字,必须以@开头。但是,我发现创建包含HTML属性的Dictionary对象会更好。这也是MVC喜欢的,因为它将所有object转换为Dictionary<string, object>

Dictionary<string, object> htmlProperties = new Dictionary<string, object>();
htmlProperties.Add("readonly", "readonly");

然后,您可以使用Html.TextBox(String, Object, IDictionary)重载将其指定为第三个参数:

<%= Html.TextBox("ID", "", htmlProperties) %>

答案 1 :(得分:0)

您可以将其停用,以便无法编辑:

<%= Html.TextBox("ID", "", new {@disabled="disabled"}) %>