如何告诉 MVC 3 中的无障碍验证使用不同的模型?

How do I tell unobstructive validation in MVC 3 to use a different model?

提问人:Jonathan 提问时间:4/4/2012 更新时间:4/10/2012 访问量:205

问:

我正在将应用程序从 MVC 1 升级到 MVC 3。我以前使用 xVal,我正在尝试使用新的 Unobstructive 验证。在我现有的代码中,我经常有以下内容。

<%=Html.ClientSideValidation<Applicant>() %>

然而,我传递给页面的模型是包含其他信息的 ViewModel。通过新的验证,它想要查看我传递给页面的模型,以便找到验证者。当我使用 HTML 帮助程序包含前缀时,我可以更改我的引用。如果我这样做,它会选择验证。但是,我想告诉页面使用我的实体模型与视图模型,这样我就不必更改所有现有控制器来查找此前缀。

这可能吗?

asp.net-mvc-3 不显眼的javascript

评论


答:

0赞 Francesco Abbruzzese 4/7/2012 #1

您可以使用不同的模型来呈现字段并对其进行验证。当传递给视图的模型与要发布的操作方法使用的模型不同时,这很有用。要发布到的操作方法和“客户端验证”都应引用同一模型,以确保客户端和服务器端验证都正常工作。 我是 Mvc Controls Toolkit 项目的协调员。在那里,有一些工具可以动态创建 html 对象,您可以使用这些对象来呈现任意模型的字段,该模型不一定是页面 ViewModel。具体而言,可以使用 crossHelper 扩展方法。 但是,我不是 100% 确定这正是您所要求的。

0赞 Esteban 4/10/2012 #2

考虑到您不想执行大量编辑,您可以编写一个自定义 HTML 帮助程序来包含您谈论的前缀。

如果您向我提供更多信息,我可以帮您编写助手。但是,您必须更改实际的帮助程序调用。