我有下面的代碼塊哪裏修剪()傳入的請求參數?
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 } });
}
}
如果用戶提交以空格,例如結束搜索「something」,如果它是一個ajax請求,它工作正常,但如果它不是ajax請求,請求會被重定向到一個不同的Action方法,此時會出錯,並返回404。
我可以在else
子句中做trim()
,例如,
new RouteValueDictionary { { "search", svm.Search.Trim() } }
,但也有一些地方,出現這種情況。理想情況下,我可以在一個地方做到這一切。
如果我把它放到控制器的Initialize
方法中,會被認爲太噁心了嗎?
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);
}
或者還有其他更好的方法嗎?