在 MVC3 中使用不显眼的 JQuery 验证而不使用 Ajax.BeginForm?
我刚刚将我的应用程序移植到 mvc3,并且使用 jquery 表单插件有很多视图。 我想使用 MVC3 提供的不显眼的 jquery 验证,但我不想使用 Ajax.BeginForm 或 Html.BeginForm。有没有办法单独渲染 html5 标签?
I just ported my application to mvc3 and i have a lot of view using jquery form plugins.
I would like to use the unobtrusive jquery validation provided by MVC3 but i dont want to use Ajax.BeginForm or Html.BeginForm. Is there a way of having the html5 tag rendered alone ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,从源代码中快速搜索......你不能不做一些修改。至少不是从服务器端。
据我了解,在使用助手时,并且仅当 ViewContext 中存在 FormContext 时,不引人注目的验证才使用为每个输入呈现的 Data-* 属性。
您可以自己在 ViewContext 中创建一个 FormContext(如果您使用的是 EditorFor),它可能可以工作。 This.ViewContext.FormContext = new FormContex() 可能有效。
作为替代方案,您可以调用 @Html.GetUnobtrusiveValidationAttributes() 并自己执行此操作,但我认为使用 @Html.BeginForm() 和 Html.EditorFor() 进行这种重构更容易。
基本上,它的麻烦比它的价值更多,至少在服务器端是这样。特别是如果您已经运行验证。
也许查看不引人注目的 JS 的实际源代码是一个更好的选择,但这超出了我的范围。也许其他人可以帮助更多......
Well, from a quick search in the source... You can't without hacking around a bit. At least not from the server side.
From what I understand the unobtrusive validation uses the Data-* attributes rendered for each input when using the helpers, and only when a FormContext exists in the ViewContext.
You could create a FormContext in the ViewContext yourself (if you're using EditorFor), it might work. This.ViewContext.FormContext = new FormContex() might work.
As an alternative you can call @Html.GetUnobtrusiveValidationAttributes() and do it yourself, but I think that this with this kind of refactoring using @Html.BeginForm() and Html.EditorFor() is easier.
Basically, it's more trouble than its worth, at least server side. Especially if you've already got validation running.
Maybe looking in the actual source of the unobtrusive JS is a better option, but that's out of my scope. Maybe someone else can help some more...