我有一个简单的 mvc Web 应用程序,它使用指定的搜索参数(名为 RA 编号)在数据库中搜索事务,现在我决定在我的应用程序上添加 jquery 块 ui,然后我意识到即使是空字符串也会触发块( "" 文本框中的单空格或双空格) 被输入。
我在我的 RA 视图模型中有数据注释,然后我在我的视图模型属性上添加了一个 AllowEmptryStrings = false 属性,请参见下面的代码
public class SearchByRAViewModel
{
[Required(ErrorMessage = "Please enter an RA number",AllowEmptyStrings = false)]
public string RANumber { get; set; }
}
这是我的控制器代码中的操作方法
public ActionResult SearchTollTransactions(SearchByRAViewModel raViewModel)
{
List<TollScrapingTransactionScreen> tollScrapingList = new List<TollScrapingTransactionScreen>();
if (ModelState.IsValid)
{
tollScrapingList = GetTransactionByRA(raViewModel.RANumber);
ViewBag.RANumber = raViewModel.RANumber;
return View(tollScrapingList);
}
else
{
return View("Index");
}
}
我现在唯一的问题是,如果搜索文本框中有空字符串,搜索页面(索引)上似乎会显示额外的验证消息,请参见截图
这是我的块 ui 部分,以防有人想知道它在哪里
$('#btnSearch').click(function () {
// there should be at least a value for ra before firing the blockui
var raValue = $('#raNumber').val();
if (!raValue || raValue.trim() === '') {
return;
}
else {
$.blockUI();
}
});
这是我的观点的一部分,它在正常的 @using(Html.BegingForm) 内
<div class="form-horizontal">
<div class="form-group">
<div class="panel panel-default">
<div class="panel-heading">Search by RA number</div>
<div class="panel-body">
<div class="col-sm-12">
<table class="table form-table">
<tr>
<th class="col-sm-2">@Html.DisplayNameFor(model => model.RANumber)</th>
<td class="col-sm-10">
@Html.TextBoxFor(model => model.RANumber, new { @class = "form-control", @tabindex = 1, @id = "raNumber" })
@Html.ValidationMessageFor(model => model.RANumber)
</td>
</tr>
</table>
</div>
<div class="btn-toolbar col-sm-12">
<input type="submit" value="Search Transaction" class="btn pull-right" tabindex="2" id="btnSearch" />
</div>
</div>
</div>
</div>
</div>