【发布时间】:2011-10-12 21:22:33
【问题描述】:
我有一个相当标准的排序/过滤/页面搜索表单,但需要控制 url 的格式。 sort/filter/page 参数都应该是 url 的一部分,例如,地址可以通过电子邮件发送给某人。
当添加另一个过滤器参数时,会发出一个 POST 请求。我的控制器方法如下所示:
[HttpPost]
public ActionResult Search(string filterField,
Operator filterOperator,
string filterValue,
PeopleGroupSearchModel model);
PeopleGroupSearchModel 由查询字符串参数填充。 filter* 参数来自已发布的表单值。
我想解析提供的过滤器值,然后将过滤器添加到模型中名为Filters 的集合中。然后,获取更新后的模型并将其转换为适当的 url,并将其作为响应传递给用户。
因此,例如,如果他们在此页面上:
PeopleGroup/Search?page=4&sort=Country
... 和 POST:
- filterField = PeopleGroupName
- filterOperator = 等于
- filterValue = 祖鲁语
...一旦所有处理完成,他们浏览器中的地址应该是这样的:
PeopleGroup/Search?page=4&sort=Country&PeopleGroupName=Zulu&PeopleGroupName_op=Equals
所以,或多或少我想做的是:
[HttpGet]
public ActionResult Search(PeopleGroupSearchModel model)
{
PeopleGroupData.Search(model);
ViewData.Model = model;
return View();
}
[HttpPost]
public ActionResult Search(string filterField,
Operator filterOperator,
string filterValue,
PeopleGroupSearchModel model)
{
PeopleGroupFilter filter = ParseFilter(filterField,
filterOperator,
filterValue);
model.Filters.Add(filter);
return RedirectToAction("Search", ???);
}
我是非常 MVC 新手,所以如果我完全错误地处理这个问题,请告诉我!
【问题讨论】:
标签: asp.net-mvc model-view-controller asp.net-mvc-2