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

时间:2012-04-03 20:07:12

标签: asp.net-mvc-3 unobtrusive-javascript

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

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

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

这可能吗?

2 个答案:

答案 0 :(得分:0)

您可以使用其他模型渲染字段并对其进行验证。当传递给视图的模型与您要发布的操作方法使用的模型不同时,这非常有用。发布到的操作方法和“客户端验证”都应该引用相同的模型,以确保Client Side和ServerSide验证都能正常工作。 我是Mvc Controls Toolkit项目的协调员。在那里,有一些工具可以创建动态的html对象,您可以使用这些对象来呈现一个arbirary模型的字段,该模型不一定是页面ViewModel。特别是您可以使用crossHelper extension method。 但是我并不是100%确定这正是你所要求的。

答案 1 :(得分:0)

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

如果您向我提供进一步的信息,我可以帮助您编写助手。但是你必须改变实际的助手调用。