如何获取asp.net MVC EditorFor生成的HTML id
我使用 HTML 帮助器来呈现我的字段:
<%=Html.EditorFor(m => m.User.Surname)%>
输出将如下所示:
<input class="text-box single-line" id="User_Surname"
name="User.Surname" type="text" value="" />
帮助器使用 className + '.' è fieldName 来构建 id。
我需要将 id 传递给 jQuery 函数。有没有一种方法可以在不进行硬编码的情况下获得它? 也许有一个可以使用 ASP.NET MVC2 约定的助手?
I use the HTML Helpers to render my fields:
<%=Html.EditorFor(m => m.User.Surname)%>
and the output would be something like this:
<input class="text-box single-line" id="User_Surname"
name="User.Surname" type="text" value="" />
The helper uses the className + '.' è fieldName to build the id.
I need to pass the id to a jQuery function. Is there a way to have it without hardcoding it?
Maybe an helper which can use the ASP.NET MVC2 conventions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
ASP.NET MVC 4 内置了 Html.IdFor()可以返回这个:
ASP.NET MVC 4 has Html.IdFor() built in that can return this:
请参阅此问题:获取表单字段生成的 clientid ,这是我的答案:
我使用这个助手:
就像使用任何其他助手一样使用它:
@Html.ClientIdFor(model=>model.client.email)
See this question: get the generated clientid for a form field, this is my answer:
I use this helper:
Use it just as you would any other helper:
@Html.ClientIdFor(model=>model.client.email)
我已按照Mac的答案此处的说明进行操作,并且我已经构建了我自己的自定义扩展:
我已经导入了应用程序的命名空间
,最后我可以像这样使用我的代码:
I've followed the instructions of Mac's answer here and I've built my own custom extension:
I've imported my application's namespace
and finally I can use my code like this:
除非您创建自己的 User.Surname EditorTemplate 并传入一些 HTML 属性,否则您将无法使用
EditorFor
执行此操作,但是您可以使用
TextBoxFor
并设置 id关于使用 jQuery 选择器检索此元素的主题,您可以通过使用一些 ends 来实现此目的,而无需进行硬编码- 带选择器。使用它,您可能仍然可以使用
EditorFor
并只需使用$("[id^='Surname
]")` 选择它。如果您尝试选择这个特定元素,那么确实没有办法不在您的 jQuery 代码中硬编码某些内容。unless you create your own User.Surname EditorTemplate which you pass in some HTML attributes you won't be able to do this with
EditorFor
However you can use
TextBoxFor
and set the idOn the topic of retrieving this element with a jQuery selector you can achieve this without having to hardcode by using some of the ends-with selector. Using that you could probably still use
EditorFor
and just select it with$("[id^='Surname
]")`. If you're trying to select this specific element there's really no way to NOT hardcode SOMETHING in your jQuery code.