我有一个搜索表单,显示在我的应用程序的每个页面上。它是使用子操作生成的:
[ChildActionOnly]
public PartialViewResult Form(SearchFormViewModel model)
{
model.LanguageList = ReferenceService.GetLanguageList();
model.SubjectList = ReferenceService.GetSubjectList();
return PartialView("_SearchForm", model);
}
和以下视图模型
public class SearchFormViewModel
{
public int Page { get; set; }
public string Name { get; set; }
public string Location { get; set; }
public IList<Subject> SubjectList { get; internal set; }
public IList<Language> LanguageList { get; internal set; }
}
并从我的布局中调用,我的所有视图都继承自该布局。
@Html.Action("Form", "Search")
表单使用 GET eg 提交/search/results?Subject=1&Location=United+Kingdom
,因此表单填充在结果页面上,页面操作执行搜索并显示结果。
public ViewResult Results(SearchFormViewModel searchModel)
{
...
我还有一个操作来处理一些友好的 url 以进行搜索,例如/computing/united-kingdom
,它使用自定义路由来指导正确的操作。
public ViewResult FriendlyResults(string subject, string location)
此操作将 url 组件与搜索参数匹配,执行搜索并显示结果。
我想要做的是为友好的 url 填充搜索表单,即将搜索参数传递给Form
子操作,这样你就可以看到你搜索的内容。
我能想到的唯一方法是将“友好搜索”模型存储在 中ViewBag
,并将其作为参数传递给 Form 操作(如果已填充)。这对我来说感觉不对。
有没有更好的方法或方法来做到这一点?