我正在开发一个简单的MVC应用程序,我在路径下生成
@Html.ActionLink(@objcity.CityName, "AgentProfiles", "Home", new {@Id=objcity.MaProvision.ProvinceName+"/"+@objcity.CityName }, null)
它是这样的网址:
http://localhost:45896/Home/AgentProfiles/Ontario/testt
在控制器中我写了这个方法:
public ActionResult AgentProfiles(String Id)
{
//Code
}
是否可以在Id变量中输入/ Ontario / testt?
答案 0 :(得分:2)
您希望在 ID(路线参数)中获得/Ontario/testt
,您必须稍微修改默认路线,或者您必须制作自定义路线,但我认为您的简单的要求尝试下面的答案。
而不是
@Html.ActionLink(@objcity.CityName, "AgentProfiles", "Home", new {@Id=objcity.MaProvision.ProvinceName+"/"+@objcity.CityName }, null)
以这种方式修改Actionlink
@Html.ActionLink(@objcity.CityName, "AgentProfiles", "Home", new { ProvinceName=objcity.MaProvision.ProvinceName ,CityName = objcity.CityName }, null)
控制器操作:
public ActionResult AgentProfiles(string ProvinceName,string CityName ) //get ProvinceName and CityName which will be coming as querystring variables as shown here.
{......}
OR
编辑: - 按照你的评论试试。
在AppStart文件夹中的RouteConfig.cs文件中再添加一个路由,如下所示:
routes.MapRoute(
"MvcRoutes", // Route name
"{controller}/{action}/{provincename}/{cityname}", // URL with parameters
new { controller = "Home", action = "Index", provincename = "", cityname= "" } // Parameter defaults
);
不要忘记将此自定义路线置于默认路线上方。
修改ActionLink
,如下所示:
@Html.ActionLink(@objcity.CityName, "AgentProfiles", "Home", new { provincename = objcity.MaProvision.ProvinceName , cityname = objcity.CityName }, null)
控制器操作:
public ActionResult AgentProfiles(string provincename ,string cityname)
{......}
答案 1 :(得分:1)
您可以修改路线,例如 -
{controller}/{action}/{*catchall}
和行动方法
public ActionResult AgentProfiles(string catchall)
{
// your code
}
然后您将在catchall参数中使用值/ Ontario / testt,您可以在操作方法中使用它。