2012-07-24 61 views
1

我很努力通过向其传递一个参数来将View中的动作调用到另一个View动作控制器。使用@ Html.actionlink - 调用另一个视图的动作控制器

这是从视图(我在索引视图和呼叫的计费控制)呼叫:

@Html.ActionLink("parameters", "MyParameters", "Account", new { email = "test" }) 

我运行时编译器说:“不能解析动作MyParameters“什么错呢?

这是我的账户控制器内的功能:

public ActionResult MyParameters(string email) {} 

这是我的路线:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "Default", 
      "{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Paramètres par défaut 
     ); 

    } 

干杯

回答

4

尝试:

@Html.ActionLink("parameters", "MyParameters", "Account", null, new { email = "test" }) 

超载是:

@Html.ActionLink("linkText", "actionName", "controller", object routeValues, object HtmlAttributes) 

routeValues是链接上添加一个查询字符串。因此,举例来说,如果你想添加的id = 1的链接,你的动作链接应该是这样的:

@Html.ActionLink("parameters", "MyParameters", "Account", new { @id = 1 }, new { email = "test" }) 

这将产生如下:

<a href="Account/MyParameters?id=1" email="test">parameters</a> 

,如果你想电子邮件作为查询字符串,你需要这样做:

@Html.ActionLink("parameters", "MyParameters", "Account", new { @id = 1, @email = "test" }, null) 

这将产生:

<a href="Account/MyParameters?id=1&email=test">parameters</a> 
+0

嗨,它没有工作,我想调用的控制器名称是'账户',它的操作名称是'MyParameters','参数'是我的链接的名称 – dtjmsy 2012-07-24 23:40:46

+0

我编辑了我的原始响应因为它是错误的。这应该现在工作。 – jzm 2012-07-24 23:44:34

+0

嗨,就是这样!我错过了新的{@id = 1}!没有更多的编译错误我现在正在测试 – dtjmsy 2012-07-24 23:47:25

0

没有ActionLink重载需要3个字符串和一个对象。 http://msdn.microsoft.com/en-us/library/dd505040

该代码可能试图将"Account"解释为routeValues和您的参数作为htmlAttributes。我猜如果你看看实际输出的链接,你会发现它看起来并不像你期望的那样。

+0

嗨,我该怎么办?我试过@ Html.ActionLink(“参数”,“MyParameters”,新的{email =“test”}),可能是我需要改变路线中的东西? – dtjmsy 2012-07-24 23:06:58

0

尝试:

@ Html.ActionLink( “控制器”, “行动”,新的{电子邮件= “测试”, 参数= “参数”})

您的控制器:

公众的ActionResult MyParameters(字符串email,字符串参数){}

相关问题