我有以下代码块
public ActionResult Tabs(SearchViewModel svm)
{
if (Request.IsAjaxRequest())
{
svm.Summary = _entitySearchService.GetSearchDataSummary(svm.Search);
return PartialView(svm);
}
else
{
return RedirectToAction("QuickSearch", "Search"
, new RouteValueDictionary { { "search", svm.Search } });
}
}
如果用户提交以空格结尾的搜索,例如“某事”,如果它是一个ajax请求,它可以正常工作,但如果它不是一个ajax请求,请求会被重定向到另一个Action方法,此时出现问题并返回404。
我可以在trim()
条款中执行else
,例如
new RouteValueDictionary { { "search", svm.Search.Trim() } }
但是有一些地方会发生这种情况。理想情况下,我可以在一个地方完成所有工作。
如果我把它放到Controller的Initialize
方法中会不会被认为是太过于hackish?
protected override void Initialize(RequestContext requestContext)
{
// do a test to see if there's a 'search' parameter in requestContext,
// and if so, trim it
base.Initialize(requestContext);
}
还是有另一种更好的方法吗?
答案 0 :(得分:0)
如果这是一个选项
,您可以覆盖SearchViewModel的setterpublic class SearchViewModel
{
...
private string search;
public string Search
{
get
{
return search;
}
set
{
search = value.Trim();
}
}
...
}
答案 1 :(得分:0)