Dav*_*Dev 5 c# asp.net-mvc trim
我有以下代码块
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 } });
}
}
Run Code Online (Sandbox Code Playgroud)
如果用户提交以空格结尾的搜索,例如“something”,如果它是 ajax 请求,那么它工作正常,但如果它不是 ajax 请求,请求将被重定向到不同的操作方法,此时会出现问题并返回 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);
}
Run Code Online (Sandbox Code Playgroud)
或者还有其他更好的方法吗?
如果这是一个选项,您可以覆盖 SearchViewModel 的设置器
public class SearchViewModel
{
...
private string search;
public string Search
{
get
{
return search;
}
set
{
search = value.Trim();
}
}
...
}
Run Code Online (Sandbox Code Playgroud)