ルーティングを試して、検索用の 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 エラーが発生します。
私を助けるかもしれない例を見つけることができません。