gpt4 book ai didi

asp.net-mvc - MVC 动态路由

转载 作者:行者123 更新时间:2023-12-02 02:38:23 26 4
gpt4 key购买 nike

我想创建动态 url,路由到具有 Id 值的 Controller 操作。我使用一个包罗万象的参数创建了以下路由

routes.MapRoute(
"RouteName",
"{id}/{*Url}",
new { controller = "Controller", action = "Action", id = "" }
);

这按预期工作并允许我使用以下 Urls:

"http://website.com/1/fake/url/path "(1 是传递给操作方法的 ID)

有谁知道不用创建我自己的 http 模块就可以用这种方式实现它的方法吗?:

"http://website.com/fake/url/path/1 "

谢谢 - 马克

最佳答案

无论如何,这对我来说真的很难。

给定以下路线:

routes.MapRoute("Default", "{*token}", 
new { controller = "Home", action = "Index", token = 0 });

你的 Controller 和支持类应该是这样的:

[HandleError]
public class HomeController : Controller
{
public ActionResult Index([ModelBinder(typeof(IndexReqquestBinder))] IndexRequest request)
{
ViewData["Title"] = "Home Page";
ViewData["Message"] = String.Format("We're looking at ID: {0}", request.ID);

return View();
}
}

public class IndexRequest
{
public Int32 ID { get; set; }
public IndexRequest(Int32 id)
{
this.ID = id;
}
}

public class IndexReqquestBinder : IModelBinder
{
public ModelBinderResult BindModel(ModelBindingContext bindingContext)
{
if ( null != bindingContext.RouteData.Values["token"] ) {
foreach ( String v in bindingContext.RouteData.Values["token"].ToString().Split('/') ) {
Int32 id = 0;
if ( Int32.TryParse(v, out id) ) {
return new ModelBinderResult(new IndexRequest(id));
}
}

}
return new ModelBinderResult(new IndexRequest(0));
}
}

关于asp.net-mvc - MVC 动态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/296284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com