我正在重构我的MVC2代码库以使用ViewModel方法。因此,我传递给我的视图以呈现表单的模型现在看起来像
model.TheObject
model.TheCollectionOfOtherObjects
我正在尝试使用HTML.EditorFor帮助器为数据类型呈现模板编辑器。它曾经在我尝试直接在视图中呈现TheObject时工作,现在有一个间接级别,我得到一个完全不同的默认对象命名方案:
例如:
在我重构到ViewModel之前,我输出了一个特殊的基于JQuery的日期选择器:
<%: Html.EditorFor(model => model.StartDate, String.Format("{0:M/d/yyyy}", Model.StartDate))%>
输出:
<input id="StartDate" name="StartDate" type="text" value="7/5/2010 11:10:25 AM" />
所有人都对JQuery的土地感到高兴。
然后我更改了视图以使用包含TheObject的ViewModel并将我的EditorFor代码更改为以下内容:
<%: Html.EditorFor(model => model.TheObject.StartDate, String.Format("{0:M/d/yyyy}", Model.TheObject.StartDate))%>
现在呈现以下HTML:
<input id="TheObject_StartDate" name="TheObject.StartDate" type="text" value="7/5/2010 11:10:25 AM" />
这在我的客户端自然会破坏我的JQuery,我更喜欢在html元素上更多地控制输出id和name属性。
关于我如何更改传递给EditorFor
的lamba表达式的任何想法由于
答案 0 :(得分:1)
为什么不直接使用CSS选择器,或者匹配ID但是看看结尾如$(“input [id $ ='StartDate']”)?
用这种方法可以控制的只有这么多;可以只使用Html.TextBox而不使用For语法。这让你完全控制......
TextBoxFor方法,使用它提供的ID,确保服务器的任何帖子都可以重新创建相同对象类型的模型跟踪...
HTH。
答案 1 :(得分:0)
迟到了,但是为了别人的利益,有一个Html.IdFor()可以让你获得生成的ID。然后,您可以将其写入JavaScript for JQuery以供使用。
<%: Html.IdFor(model => model.TheObject.StartDate) %>