2014-09-22 59 views
0

我工作的一个简单的MVC应用程序,在那里我获得了下面的路径获得一个ActionResult参数在MVC4

@Html.ActionLink(@objcity.CityName, "AgentProfiles", "Home", new {@Id=objcity.MaProvision.ProvinceName+"/"[email protected] }, null) 

它使一个网址是这样的:

http://localhost:45896/Home/AgentProfiles/Ontario/testt 

在控制器I已经写了这种方法:

public ActionResult AgentProfiles(String Id) 
{ 
    //Code 
} 

是否有可能进入/安大略/ testt在Id变量?

+1

您是否试图在您的操作方法中获取'ProvinceName'和'CityName'的值? – 2014-09-22 12:38:14

+0

你有没有路由这些参数?也显示你的路线 – Tushar 2014-09-22 13:04:02

回答

2

你想/Ontario/testtID(Route参数)为此,你必须修改默认路由点点,或者你必须做出一个自定义的路线,但在我为您简单的要求意见试试下面的答案。

而不是

@Html.ActionLink(@objcity.CityName, "AgentProfiles", "Home", new {@Id=objcity.MaProvision.ProvinceName+"/"[email protected] }, 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) 
{......} 
+0

I'just只需要添加斜杠(“\”)....事情我需要添加 – user4066499 2014-09-22 13:36:38

+0

@ user4066499 ...对不起,我没有你你是什么说???? – 2014-09-22 13:40:44

+0

你的代码工作正常,但我需要这个http:// localhost:45896/Home/AgentProfiles/Ontario/Punjabb,但你的代码显示这个http:// localhost:45896/Home/AgentProfiles?ProvinceName = Ontario&CityName = Punjabb – user4066499 2014-09-22 13:42:37

1

你可以修改你的路由喜欢 -

{controller}/{action}/{*catchall} 

和行动方法

public ActionResult AgentProfiles(string catchall) 
{ 
// your code 
} 

然后,您将在您的catchall参数中使用动作方法中的值/ Ontario/testt。

+0

我已经做了this.getting错误...页面未找到 – user4066499 2014-09-22 13:39:46

+0

首先,您必须确保像AgentProfiles视图页面可用或不。如果是的话,你在做什么?你想使用/ Ontario/testt在URL中打开某个页面?如果是,那么我认为应该有一个名为Ontario的控制器和名为testt的操作方法。请详细告知我为什么你收到404页未找到错误。 – Mukund 2014-09-23 05:01:41