美好的一天, 这是我的第一个问题,所以请善待。我刚从表格搬到了mvc。 我已经做了以下路线(下面)。我构建了一个局部视图,其中还包含2个其他部分视图(如下所示)。 提交时,网址将是'查找/索引?区域= 3&兴趣= 1'
创建与定义的路线匹配的友好网址的最佳方法是什么 的 '查找/索引/在威尔士-3 /运动-1'?我可以发布然后重定向,但我认为这可能效率低下。一个更好的方法可能是使用jquery?
还请说明所使用的设计是否正确或是否可以改进?分离视图的原因是因为它们用于多个视图。
提前致谢!
routes.MapRoute(
name: "Find",
url: "{controller}/{action}/In-{region}-{rid}/{interest}-{iid}",
defaults: new { controller = "Find", action = "Index", region = UrlParameter.Optional,
rid = UrlParameter.Optional,
interest = UrlParameter.Optional,
iid = UrlParameter.Optional
});
@model SimpleFriendFinderModel
<h1>Find</h1>
<div>
@using (Html.BeginForm("Index", "Find", FormMethod.Get))
{
@Html.Partial("_RegionDropDown", @Model.Regions)
@Html.Partial("_InterestDropDown", @Model.Interests)
<div>
<button>SEARCH</button>
</div>
}
</div>
@model IEnumerable<Region>
<select id="Region" name="Region">
<option>REGION</option>
@{ foreach(var item in Model) {
<option value="@item.RegionID">@item.RegionName</option>
}
}
</select>
另一个局部视图是Region的副本,但显然是一个不同的模型。
答案 0 :(得分:2)
对于PartialViews;如果你在其他页面上重复使用它,那就是你要走的路。您可以将其视为“封装逻辑”。
更新:如果您只是使用下拉列表的部分视图,请忽略上述内容。有一个HtmlHelper,Html.DropDownListFor()
。
第一部分;订单是相关的:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Pretty",
url: "{controller}/{action}-{id}/Something",
defaults: new { controller = "Test", action = "Foo", id = UrlParameter.Optional }
);
//default route
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
例如,如果您想格式化URL,那么将起作用:
http://local:23802/Test/Foo-5/Something