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>
我的主要問題是,我沒有將我的文本框與我的類關聯起來,而且我有一種形式的兩個不同表中的數據? – Pinu 2010-05-13 13:34:45
Fluent Validation對C#對象起作用,所以最好建議在模型中使用它,儘管它能夠生成適當的Clientside驗證。另一種選擇可能是使用標準的ASP.NET驗證控件,併爲每個表單使用不同的ValidationGroup?只是一個想法 – 2010-05-13 13:54:37
Pinu,但你的文本框應該至少與你的模型張貼到控制器,對不對?因此,您可以使用FluentValidation或MVC2開箱即用的驗證對Model類進行驗證。 – 2010-05-13 13:56:11