mvc 3 html属性

eky*_*nox 0 asp.net-mvc-3

我一直在玩MVC.我目前难以使用html辅助方法.我注意到的一件事是我无法将ASP.NET Web Form逻辑应用到MVC中.为了进一步解释,在ASP.NET中我可以创建一个Label控件并为其分配一些文本数据,然后读取文本数据.

但是,在MVC中,我似乎无法对@ Html.LabelFor/@ Html.Label做同样的事情,我已经意识到,一旦从表单执行POST,Label中的值就不会绑定回我的视图模型.但是,如果我使用EditorFor或TextBoxFor,我可以在POST时获取绑定到viewmodel的值.

我的问题是什么html hlper方法应该用来显示文本为readonly但是能够在post上绑定回我的viewmodel?我试过TextBoxFor,其html属性设置为disabled和readonly但没有运气.

感谢任何指针.谢谢

hun*_*ter 5

您应该能够通过传入方法将该readonly属性绑定到方法的第二个参数:TextBoxhtmlAttributesTextBoxFor

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

在MSDN上:InputExtensions.TextBoxFor方法(HtmlHelper,Expression>,Object)


如果您尝试维护Label值,可以使用LabelForHiddenFor方法的组合.

我不知道为什么你需要这样做,因为你应该能够从属性中获取DisplayText属性或属性名称.

<%=Html.LabelFor(m => m.SomeProperty) %>
<%=Html.HiddenFor(m => m.SomeProperty) %>
Run Code Online (Sandbox Code Playgroud)

但这并没有多大意义,因为通常的语法是:

<%=Html.LabelFor(m => m.SomeProperty) %>
<%=Html.TextBoxFor(m => m.SomeProperty) %>
Run Code Online (Sandbox Code Playgroud)

请注意,如果使用该disabled属性,则在提交表单时不会发布输入