xVal和ViewModel模式 - 它可以完成吗?

时间:2009-05-19 00:57:29

标签: asp.net-mvc xval

我一直在向NerdDinner应用程序添加xVal - 到目前为止一直很好,我在一行中使用jQuery.validate进行客户端验证,这真的很漂亮。但我似乎无法让xVal验证复杂的对象。假设我有一个看起来像这样的Dinner对象:

public class Dinner
{
     [Required]
     public string Title { get; set; }
}

和另一个对象,一个容器:

public class DinnerWrapper
{
     public Dinner Dinner { get; set; }
     public string Name { get; set; }
}

如果我的控制器将Dinner传递给View,我可以让xVal在我的表单末尾执行客户端验证,如下所示:

<% using (Html.BeginForm())
       { %>
    <fieldset>
        <p>
            <label for="Title">
                Dinner Title:</label>
            <%= Html.TextBox("Title") %>
            <%= Html.ValidationMessage("Title", "*") %>
        </p>
    </fieldset>
    <% } %>
<%=Html.ClientSideValidation<Dinner>()%>

但是当我传递DinnerWrapper时,我无法让它工作 - xVal没有通过以下设置执行客户端验证:

<% using (Html.BeginForm())
       { %>
    <fieldset>
        <p>
            <label for="Title">
                Dinner Title:</label>
            <%= Html.TextBox("Title", Model.Dinner.Title) %>
            <%= Html.ValidationMessage("Title", "*") %>
        </p>
    </fieldset>
    <% } %>
<%=Html.ClientSideValidation<DinnerWrapper>()%>

有什么想法吗?到目前为止,我已成功将xVal(和NHaml)集成到NerdDinner应用程序中,但我似乎遇到了障碍。

1 个答案:

答案 0 :(得分:0)

原来我没有更改ClientSideValidation行 - 它的工作原理如下:

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