2010-05-13 316 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