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