MVC4の使用
検索ボックスを作成している部分的なビューがあります。送信ボタンをクリックすると、検索値がコントロールに渡され、グループがフィルタリングされます。
すべてがうまくフィルタリングされます。ただし、アクションを実行した後に取得したいURLが表示されません。localhost/を取得します
私が表示したいのはlocalhost/mySearchValueです
プロジェクトのルーティングは、ローカルホストの後に値を入力した場合に、検索ボタンと同じようにグループをフィルタリングするように設定されています。
検索値をURLに表示するために何をする必要があるかについてのアイデアはありますか?
これが私の部分的な見解です
@using (Html.BeginForm("List","Group"))
{
@Html.TextBox(name: "search")
<input type="submit" value="search" />
}
私のコントローラー
public ViewResult List(string search, int page = 1)
{
if (search == "")
{
search = null;
}
GroupsListViewModel model = new GroupsListViewModel
{
Groups = repository.Groups
.Where(g => search == null || g.Tag == search || g.Tag2 == search)
.OrderBy(g => g.GroupId)
.Skip((page - 1) * PageSize)
.Take(PageSize),
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = repository.Groups.Count()
},
CurrentSearch = search
};
アップデート
@Html.BeginForm("List","Group",FormMethod.Get)
localhost /?search = testのようにURLを取得するのに役立ちますが、コントローラーが呼び出されたときに検索が設定されていないため、フィルタリングは行われません。検索用の私のURLスキーマは次のとおりですlocalhost/test
これが私のルーティング情報です
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(null,
"",
new {
controller = "Group", action = "List",
search = (string)null, page = 1
}
);
routes.MapRoute(null,
"Page{page}",
new { controller = "Group", action = "List", search = (string)null },
new { page = @"\d+" }
);
routes.MapRoute(null,
"{search}",
new { Controller = "Group", action = "List", page = 1 }
);
routes.MapRoute(null,
"{search}/Page{page}",
new { controller = "Group", action = "List" },
new { page = @"\d+" }
);
routes.MapRoute(null, "{controller}/{action}");
}