C# MVC局部视图、GET和布线
你好, 这是我的第一个问题,所以请客气一点。我刚刚从表单转移到mvc。 我走了下面的路线。我构建了一个局部视图,其中还包含另外两个局部视图(如下所示)。 提交时,url将类似于'Find/Index?Region=3&Interest=1'C# MVC局部视图、GET和布线,c#,asp.net-mvc,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc Routing,你好, 这是我的第一个问题,所以请客气一点。我刚刚从表单转移到mvc。 我走了下面的路线。我构建了一个局部视图,其中还包含另外两个局部视图(如下所示)。 提交时,url将类似于'Find/Index?Region=3&Interest=1' 创建与定义的路由匹配的友好url的最佳方法是什么 “查找/索引/In-Wales-3/Sport-1”?我可以发布然后重定向,但我认为这可能效率低下。使用jquery是否有更好的方法 还请说明所使用的设计是否正确或是否可以改进?分离视图的原因是,它们用于多个
@model SimpleFriendFinderModel
发现
@使用(Html.BeginForm(“Index”、“Find”、FormMethod.Get))
{
@Html.Partial(“_RegionDropDown”,@Model.Regions)
@Html.Partial(“\u InterestDropDown”,@Model.Interests)
搜寻
}
区域局部视图
@model IEnumerable
区域
@{foreach(模型中的变量项){
@item.RegionName
}
}
另一个局部视图是区域的副本,但显然是不同的模型 用于局部视图;如果你在其他页面上重复使用它,这是一种方法。你可以把它看作是“封装逻辑” 更新:如果您只是使用部分视图作为下拉列表,请忽略上述内容。有一个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
至于你的第一个问题,它实际上是一个很好的问题。当您打开页面时,没有帖子,URL是否为
Find/Index/in-Wales-3/Sport-1
格式?嗨,不,这是生成该URL的目的。实际url是Find/Index?Region=Wales&rid=3&Interest=Sport&iid=1。很难看!!啊,我曾经用过类似的东西。你能张贴完整的路线图吗?我知道代码中出现的顺序非常重要。嗨,Stefan,谢谢你的输入。我知道路由功能在模式匹配方面是基于FCFS的。路线设置不是问题所在。问题是如何将表单提交到该URL。使用GET,我不知道我的下拉值是否有占位符函数。或者我可以发布然后执行重定向结果,但这可能效率低下。干杯…嗯,现在我明白你的意思了。。。并试图弄明白这一点:|
@model IEnumerable<Region>
<select id="Region" name="Region">
<option>REGION</option>
@{ foreach(var item in Model) {
<option value="@item.RegionID">@item.RegionName</option>
}
}
</select>
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 }
);
http://local:23802/Test/Foo-5/Something