MVC4动态控制器路径
本文关键字:路径 控制器 动态控制 动态 MVC4 | 更新日期: 2023-09-27 18:01:14
我的MVC4项目中有一个SiteController类,"Site"url工作正常,但我需要在"Site"后面有一个动态url部分,我需要url看起来像这样:
mysite.com/Site/{DYNAMISTRING}/用户(或其他(
{DYNAMICSTRING}可以是子网站的名称,因此控制器应该检查数据库中是否确实存在该子网站。
现在我使用的是查询字符串,但这不是我的客户想要的。
我该怎么做?
其他详细信息
我的路线:
routes.MapRoute(
"Subdomain", // Route name
"{controller}/{action}/{dynamicString}", // URL with parameters
new { controller = "Site", action = "Subdomain" } // Parameter defaults
);
我的控制器:
public ActionResult Subdomain(string dynamicString)
{
return View();
}
当我导航到:/Site/Subdomain/SomeString 时,dynamicString的值为null
您必须配置路由。例如,如果你有家庭控制器:
public class HomeController:Controller
{
public ActionResult Subdomain(string dynamicString)
{
return View();
}
}
然后你必须像一样配置你的路由
routes.MapRoute(
"Subdomain", // Route name
"{controller}/{action}/{dynamicString}/anyOtherParams", // URL with parameters
new { controller = "Home", action = "Subdomain", dynamicString = "" } // Parameter defaults
);
你可以这样做:
routes.MapRoute(
name: "Default", // Route name
url:"Site/{dynamicstring}", // URL with parameters
defaults: new {controller = "Site", action = "Index" } // Defaults
);
你可以像一样继续向url部分添加部分
url:"Site/{dynamicstring}/{anythingelse}" // url:"Site/{dynamicstring}/{anythingelse}/{bla}/Test/{hello}/etc..."
或者你也可以有这样一条包罗万象的路线:">
routes.MapRoute(
name: "Default", // Route name
url:"{*all}", // catch all
defaults: new {controller = "Site", action = "Index" } // Defaults
);
并通过在/上拆分来获取控制器索引操作中的所有其他部分
请确保将自定义路由放在默认路由之前,否则默认路由将拾取它。
在你的控制器中,你会得到这样的东西:
public ActionResult Index(string dynamicstring, string anythingelse)
{
return View();
}
然后如果你传入这样一个url:
http://www.mysite.com/Site/test.nl/jordy
您的dynamicstring将具有值"test.nl",而其他任何东西都将具有"jordy"我希望这能帮助