【发布时间】:2013-05-01 07:17:28
【问题描述】:
我有一个使用 MVC4 和 Razor 的搜索页面。详情如下:
- 整个页面分为两部分。
- 左侧面板共有 5 个搜索部分,如按产品搜索、按城市搜索等。每个部分都有复选框列表。因此用户可以从每个部分中选择多个选项。
-
搜索面板是带有提交按钮的局部视图。如下所示
@using (Html.BeginForm("ModelsList", "Model")) {
<div class="ModelListSearch Panel" style="width: 309px; float: left"> <div class="heading"> By Budget <div class="clear"> </div> </div> <!--heading--> <ul> @{ for (int i = 0; i < Model.BudgetDescription.Count; i++) { <li> @Html.HiddenFor(m => m.BudgetDescription[i].BudgetId) @Html.HiddenFor(m => m.BudgetDescription[i].Description) @Html.CheckBoxFor(m => m.BudgetDescription[i].Selected)@Model.BudgetDescription[i].Description </li> } } </ul> -
动作方法如下
public ActionResult ModelsList(int?brandId, int?bodyStyleId, int?fuelTypeId, int? 传输类型ID,整数?预算ID) {
// this is called when first time page is loaded }[HttpPost] 公共无效模型列表(NewCarSearchContainer 搜索数据) { // 这是在点击搜索按钮时调用的
} 点击搜索按钮后,搜索结果显示在右侧面板中。
-
当我们点击搜索按钮时,它会将整个搜索对象 (NewCarSearchContainer) 发布到操作方法中,我们从该对象中找出选定的项目并相应地从 DAL 层获取数据。
此页面运行良好 但问题是 URL 没有根据用户选择的搜索选项进行更新。我认为当我们使用 post 时,它不会更新 url。 我们不能使用 GET 作为 GET 将所有复选框项作为具有特定限制的查询字符串标题。 一种选择是使用操作链接而不是提交按钮。但在那种情况下,我不知道如何将搜索面板的选定项目传递给操作方法。 我们需要根据选择的搜索选项更新 URL 以优化 SEO。
【问题讨论】:
标签: url search asp.net-mvc-4 checkbox http-post