使用@ Html.actionlink - 调用另一个View的actioncontroller

时间:2012-07-24 22:54:12

标签: asp.net-mvc-3 view

我正在努力通过向其传递参数来将View中的操作调用到另一个View actioncontroller。

这是来自View的调用(我在索引View中并调用Account控制器):

@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
        );

    }

干杯

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

尝试:

  

@ Html.ActionLink(“Controller”,“Action”,new {email =“test”,   parameters =“parameters”})

你的控制器:

  

public ActionResult MyParameters(string email,string parameters){}