0

我无法让xVal 验证与强类型视图模型一起使用。

xVal 中的每个方法似乎都需要一个在处理强类型视图模型时不使用的前缀。

我的视图包含与此类似的代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ContactForm>" %>
<%= Html.TextBox("firstName", Model.FirstName) %>

以下代码进入控制器:

try
{
    var theModel = form.ToModel();
    _contactRepository.Save(theModel);
}
catch (RulesException ex)
{
    ex.AddModelStateErrors(ModelState, string.Empty); // Passing string.Empty for prefix, since I don't use prefixes.
}

return View(form);

但是,上面的代码不起作用。我肯定错过了一些东西,但不知道是什么。这是我第一次使用 xVal。

感谢您的帮助!

4

3 回答 3

0

你的帖子不够简洁,我无法弄清楚出了什么问题,但你可以在这篇博客文章的末尾找到一个完整的演示网站。本文还逐步描述了您需要执行的所有操作,因此这应该可以帮助您运行 xVal。

于 2009-11-17T15:23:13.477 回答
0

就 Adrian 而言,我们看不到您是否在视图模型上使用了 DataAnnotations,或者您是否使用了本文中描述的任何类型的跑步者。您需要使用它提到的 DataAnnotationsValidationRunner 之类的东西来对您使用的验证属性(例如,必需、范围等)指定的视图模型的每个属性执行验证。

基本上步骤是:

  1. 从表单中检索更新后的强类型视图模型。
  2. 将该模型传递给您的DataAnnotationsValidationRunner,收集导致的任何错误
  3. 如果有任何错误(ErrorInfo 对象),将它们作为RulesException
  4. 使用异常的方法捕获RulesException并添加验证异常到您的模型AddModelStateErrors
  5. 检查是否ModelState.IsValid,如果不是,代表您的视图,由于您的异常处理,现在将错误绑定到您的视图模型。您必须确保有适当的ValidationMessagehtml 助手调用,链接的文章也引用了这些调用。
于 2010-04-02T16:24:24.020 回答
0

我认为问题在于您不使用前缀。如果您调试 ModelState,您可以看到诸如“.FirstName”之类的验证,尽管它们应该类似于“FirstName”。因此,客户端验证摘要和内容不会显示这些验证错误消息。

我认为这是 xVal 中的一个错误。

于 2010-09-01T12:15:00.527 回答