比如我得到了一个过滤器模型:
public class Filter
{
public int Id{get;set;}
public string Name{get;set;}
public DateTime CreateTime{get;set;}
}
还有一个SearchController操作,如:
public ActionResult Search(Filter filterModel)
{
List<Model> model =SampleBll.get(filterModel)
}
所以问题是。如何配置像
这样的网址/Search/{Filter.Id}_{Filter.Name}_{Filter.CreatTime}/
感谢您的帮助
答案 0 :(得分:1)
您可以将{Filter.Id}_{Filter.Name}_{Filter.CreatTime}
视为string filter
并在控制器中解析它。
public ActionResult Search(string filter)
{
var parts = filter.Split("|".ToCharArray());
Filter model = new Filter();
model.Id = Int32.Parse(parts[0]);
// ...
}
答案 1 :(得分:1)
首先需要将以下路由添加到Global.asax.cs RegisterRoutes
方法中,之前默认路由:
routes.MapRoute(
"Search", // Name
"Search/{Id}_{Name}_{CreateTime}", // url format
new { controller = "Search", action = "Search" } // Defaults
);
完成此操作后,使用/Search/123_Test_06-01-2011
等网址转到您的应用程序将触发路由,并且内置对象映射将负责将属性映射到模型,只要参数名称在路由中匹配属性的名称,它们可以成功地转换为相应的类型。
答案 2 :(得分:0)
使用字符串或更改_ per / {Filter.Id}/{Filter.Name}/{Filter.CreatTime}