/Product/Category/Id
Id 値は、選択されたドロップダウン リスト ID です。しかし、代わりに/Product/Category?Id=Id
、うまく機能しますが、URL が見栄えがよくありません。
@using (Html.BeginForm("Category", "Product", FormMethod.Get))
{
<div class="category-search">
<label for="CategoryList">Filter by Category</label>
@Html.DropDownList("Id", (IEnumerable<SelectListItem>)ViewBag.CategoryList)
<input type="submit" value="Filter" />
</div>
}
きれいな URL を維持するために何をする必要がありますか
編集
My Global.asax.cs には、次のルートのみがマップされています
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
// Parameter defaults
);
私のコントローラーでは、ViewBag に追加しています(ViewModel を使用することをお勧めしますが、それは既に IPagedList で使用されています)。
var categories = Session.QueryOver<Category>()
.OrderBy(c=>c.CategoryName).Asc
.List();
ViewBag.CategoryList = new SelectList(categories, "CategoryName", "CategoryName");
CategoryName
ドロップダウンの ID とラベルにを使用するのは少しおかしいと思いますが、ID に GUID を使用しているため、ひどい URL になります。これは、URL を「ハッキング」できることが有効な唯一のケースです。つまり、ユーザーが希望する場合は、ドロップダウン リストで検索するのではなく、必要に応じて URL でフィルタリングするカテゴリを入力できることを嬉しく思います。