2010-05-13 311 views
0

我需要验证高级搜索表单,但它有数据要发送到2个不同的表人员和文档,所以我无法使用数据注释。我需要验证名称只是字符,帐号&是一个数字。我如何验证这些字段?ASP.NET MVC验证

<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <center> 
     <img src="../../Content/images/DocuVault_Logo.png" alt="DocuVault" /> 
     <%= Html.ValidationSummary() %> 
     <% using (Html.BeginForm("QuickSearch", "Search")) 
     { %> 
      <div id="div_QuickSearch"> 
       <table> 
        <tr> 
         <td colspan="2"> 
         <%= Html.TextBox("search", "", new { style = "width: 300px" })%> 
         <input type="submit" value="Search" /> 
         </td> 
        </tr> 
        <tr> 
         <td colspan="2"> 
         <%= Html.ValidationMessage("search") %> 
         </td> 
        </tr> 
        <tr> 
         <td><a href="#" id="link_advanced">Advanced Search</a></td> 
        </tr> 
       </table> 
       <br /> 
      </div> 
     <% } %> 
     <ul> 
     </ul> 
     </div> 
     <% using (Html.BeginForm("AdvancedSearch", "Search")) 
     { %> 
      <div id="div_AdvancedSearch" style="display: none; width: 420px; padding: 10px;"> 
       People 
       <table style="border: solid 1px black; padding: 5px; width: 400px;"> 
        <tr> 
         <td>Name:</td> 
         <td align="right"> 
         <%= Html.TextBox("searchName") %> 
         <%= Html.ValidationMessage("searchName")%> 
         </td> 
        </tr> 
        <tr> 
         <td>Address:</td> 
         <td align="right"> 
         <%= Html.TextBox("searchAddress") %> 
         <%= Html.ValidationMessage("searchAddress")%> 
         </td> 
        </tr> 
        <tr> 
         <td>Account Number:</td> 
         <td align="right"> 
         <%= Html.TextBox("searchAccountNumber") %> 
         <%= Html.ValidationMessage("searchAccountNumber")%> 
         </td> 
        </tr> 
       </table> 
       <br /> 
       Documents 
       <table style="border: solid 1px black; padding: 5px; width: 400px;"> 
        <tr> 
         <td>Invoice:</td> 
         <td align="right"> 
         <%= Html.TextBox("searchInvoice") %> 
         <%= Html.ValidationMessage("searchInvoice")%> 
         </td> 
        </tr> 
        <tr> 
         <td>Amount:</td> 
         <td align="right"> 
         <%= Html.TextBox("searchAmount") %> 
         <%= Html.ValidationMessage("searchAmount")%> 
         </td> 
        </tr> 
        <tr> 
         <td>Job:</td> 
         <td align="right"> 
         <%= Html.TextBox("searchJob") %> 
         <%= Html.ValidationMessage("searchJob")%> 
         </td> 
        </tr> 
        <tr> 
         <td>SDI:</td> 
         <td align="right"> 
         <%= Html.TextBox("searchSDI") %> 
         <%= Html.ValidationMessage("searchSDI")%> 
         </td> 
        </tr> 
        <tr> 
         <td>Date:</td> 
         <td align="right"> 
         <%= Html.TextBox("searchDateBegin", "", new { style = "width: 88px" })%> 
         to 
         <%= Html.TextBox("searchDateEnd", "", new { style = "width: 88px" })%> 
         <%= Html.ValidationMessage("searchDate")%> 
         </td> 
        </tr> 
       </table> 
       <br /> 
       <div style="width: 100%;"> 
        <span style="float: left; margin-left: 10px;"><a href="#" id="link_quick">QuickSearch</a></span> 
        <span style="float: right; margin-right: 10px;"><input type="submit" value="Advanced Search" /></span> 
       </div> 
      </div> 
     <% } %> 
    </center> 
    </asp:Content> 

回答

0

我用jQuery插件验证并使用我执行的验证。因为我想保持简单。

0

尝试FluentValidation。它是一个非常简单而强大的验证框架,可以根据规则验证您的类。它也可以用来生成ClientSide JQuery Validators

+0

我的主要问题是,我没有将我的文本框与我的类关联起来,而且我有一种形式的两个不同表中的数据? – Pinu 2010-05-13 13:34:45

+0

Fluent Validation对C#对象起作用,所以最好建议在模型中使用它,尽管它能够生成适当的Clientside验证。另一种选择可能是使用标准的ASP.NET验证控件,并为每个表单使用不同的ValidationGroup?只是一个想法 – 2010-05-13 13:54:37

+0

Pinu,但你的文本框应该至少与你的模型张贴到控制器,对不对?因此,您可以使用FluentValidation或MVC2开箱即用的验证对Model类进行验证。 – 2010-05-13 13:56:11