我想创建一个MVC应用程序来生成情况说明书,但我不确定如何构建路由和控制器。
它由一个索引页面组成,该索引页面充当许多独立面板布局的模板,每个面板包含不同类型的数据。
我想要一个如下所示的路线模板:
/Factsheets/Panels/PanelType?fundId=1&countryId=ABC
所以这些就是我正在使用的网址:
/Factsheets/Panels/NameAndDatePanel?Afund=1&county=IE
/Factsheets/Panels/AssetsPanel?fund=1&county=IE
我希望Factsheets控制器能够为Panel控制器提供生成我请求的面板类型所需的配置对象。
我的路由结构应该是什么样的?
我的控制器结构应该是什么样的?
编辑
如果我想拥有如下的roure结构会有什么变化:
我想要一个如下所示的路线模板:
/Factsheets/ContentArea/Panels/PanelType?fundId=1&countryId=ABC
所以这些就是我正在使用的网址:
/Factsheets/PageTop/Panels/NameAndDatePanel?Afund=1&county=IE
/Factsheets/PageTop/Panels/AssetsPanel?fund=1&county=IE
以便FactsheetsController被实例化以包含ContentArea所需的数据,以了解要向其生成的面板提供哪些数据。
答案 0 :(得分:1)
?
之后的内容是查询字符串,因此它不会被路由引擎反映出来。所以你的路线可能如下:
routes.MapRoute(
"Default",
"{controller}/{action}/{panelType}",
new { controller = "Factsheets", action = "Panels", panelType = UrlParameter.Optional }
);
你将拥有以下控制器:
public class FactsheetsController : Controller
{
public ActionResult Panels(string panelType)
{
return View();
}
}
更新:
如果panelType
参数不是可选的,则可以提供正则表达式约束:
routes.MapRoute(
"Default",
"Factsheets/Panels/{panelType}",
new { controller = "Factsheets", action = "Panels", panelType = UrlParameter.Optional },
new { panelType = ".+" }
);