我正在尝试尝试路由并为搜索生成一个对 seo 友好的 url。
目前我有如下视图模型:
public class SearchFormViewModel
{
//[Required(ErrorMessage="Keyword is required")]
public string Keyword { get; set; }
public IEnumerable<SelectListItem> TransactionTypes { get; set; }
public int TransactionTypeId { get; set; }
public IEnumerable<SelectListItem> RoomLookUps { get; set; }
public int? MinBeds { get; set; }
public int? MaxBeds { get; set; }
...
}
当这个表单被提交时,它会进入一个控制器:
public ActionResult SearchProperties(SearchFormViewModel viewModelInp)
{
// Perform search;
}
并显示搜索结果。但是,生成的 url 如下:
http://localhost:49191/search/searchproperties?Keyword=London&TransactionTypeId=2&MinBeds=&MaxBeds=&MinPrice=&MaxPrice=
我需要一个看起来像的 URL
http://localhost:49191/flats-to-rent/London?MinBeds=&MaxBeds=&MinPrice=&MaxPrice=
我不确定如何将参数从 ViewModel 传递到 Route
以下路线不起作用:
routes.MapRouteLowercase(
"Search-Properties-Buy",
"flats-to-rent/{Keyword}",
new { controller = "Search", action = "SearchProperties", Keyword = UrlParameter.Optional },
new { TransactionTypeId = "2" }
);
我尝试了其他各种方法,但似乎都不起作用,并且出现 404 错误。
我找不到任何可能对我有帮助的例子。