1

比如我得到一个过滤器模型:

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)
}

所以问题是。如何配置 URL

/Search/{Filter.Id}_{Filter.Name}_{Filter.CreatTime}/

谢谢您的帮助

4

3 回答 3

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]);

   // ...
}
于 2012-10-10T14:24:38.297 回答
1

您首先需要在默认路由之前将以下路由添加到 Global.asax.csRegisterRoutes方法中:

routes.MapRoute(
    "Search", // Name
    "Search/{Id}_{Name}_{CreateTime}", // url format
    new { controller = "Search", action = "Search" } // Defaults
    );

完成此操作后,使用触发路由的 url 访问您的应用程序/Search/123_Test_06-01-2011,并且内置对象映射将负责将属性映射到模型,只要路由中的参数名称与属性,它们可以成功地转换为相应的类型。

于 2012-10-11T11:51:07.850 回答
0

使用字符串或更改 _ per /{Filter.Id}/{Filter.Name}/{Filter.CreatTime}

于 2012-10-10T14:28:37.147 回答