在MVC4中获取Actionresult参数

时间:2014-09-22 12:33:27

标签: asp.net asp.net-mvc

我正在开发一个简单的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?

2 个答案:

答案 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,您可以在操作方法中使用它。