我一直在向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应用程序中,但是我似乎遇到了障碍。

最佳答案

原来,我不必更改ClientSideValidation行-它的工作方式如下:

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

关于asp.net-mvc - xVal和ViewModel模式-能做到吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/880514/

10-09 07:14