带有模型数据的 MVC 5 路由

Posted

技术标签:

【中文标题】带有模型数据的 MVC 5 路由【英文标题】:MVC 5 Routing with Model Data 【发布时间】:2014-10-13 16:06:07 【问题描述】:

我有一个将模型数据发回控制器的 html 表单。

用户输入信息后,表单提交给Controller:U,Action:Arama

在提交时,我想创建一个包含用户输入模型数据的自定义 URL。

我的模特:

string Nereden
string Nereye
string NeredenKod
string NereyeKod

我想做的是在 URL 中只使用其中的 2 个数据,尽管我需要控制器中的完整模型。

我的意思是,我希望这个表单提交到这个 url(其余数据不会在 url 上):

localhost:34534/U/Arama/NeredenKod/NereyeKod

【问题讨论】:

【参考方案1】:

假设你的动作是这样的:

public ActionResult SomeActionName(SomeModel modelName)
    //Code here

你可以这样定义路由:

routes.MapRoute(
   name: "SomeRouteName",
   url: "StaticPath/modelName.NeredenKod/modelName.NereyeKod",
   defaults: new  controller = "SomeControllerName", 
                   action = "SomeActionName" 
  );

确保将其置于默认路由之上。

【讨论】:

它不起作用,我把它放在默认路由之上。可能是因为首次渲染cshtml时模型为空 routes.MapRoute( name: "Arama", url: "ulasim/gelen.NeredenKod", defaults: new controller = "U", action = "Arama" ); @BurakGazi 你有没有试过在调试的控制器上放断点,看看模型对象是不是null

以上是关于带有模型数据的 MVC 5 路由的主要内容,如果未能解决你的问题,请参考以下文章

带有 Url.Action 的 MVC 属性路由未解析路由

带有查询参数的 MVC 属性路由不起作用

C# ASP MVC 路由模型 ID 错误

Django 路由层,视图层,模板层

ASP.NET MVC - 路由 - 带有文件扩展名的操作

mvc——URL路由_1_定义路由(映射url到动作方法)