1

我正在努力通过向它传递一个参数来将视图中的动作调用到另一个视图动作控制器。

这是来自视图的调用(我在索引视图中并调用帐户控制器):

@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

3 回答 3

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>
于 2012-07-24T23:30:15.950 回答
0

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

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

于 2012-07-24T23:00:45.677 回答
0

尝试:

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

你的控制器:

public ActionResult MyParameters(字符串电子邮件,字符串参数){}

于 2012-07-24T23:19:22.447 回答