使用参数MVC4JavaScript调用操作方法

使用参数MVC4JavaScript调用操作方法,javascript,asp.net-mvc-4,redirect,Javascript,Asp.net Mvc 4,Redirect,我又累又笨,但我的编码问题是: 我们正在使用d3.js在MVC4动作方法Live中绘制google地图元素。 我们已经为d3.js元素实现了点击,需要从javascript重定向到另一个MVC操作方法 操作方法“声明”如下所示: public ActionResult Visualization(String appId = "", String userId = "") .on("click", function (d, i) { // just as an example

我又累又笨,但我的编码问题是:

我们正在使用d3.js在MVC4动作方法Live中绘制google地图元素。 我们已经为d3.js元素实现了点击,需要从javascript重定向到另一个MVC操作方法

操作方法“声明”如下所示:

public ActionResult Visualization(String appId = "", String userId = "")
.on("click", function (d, i) {
        // just as an example use for the click-event. 
        alert(d.AppName); }
@Url.Action("Visualization", "StatsLocation", new{ appId=d.AppId, userId=d.UserId})
在javascript中,我们在d3.js函数中有一个代码段,它可以工作,如下所示:

public ActionResult Visualization(String appId = "", String userId = "")
.on("click", function (d, i) {
        // just as an example use for the click-event. 
        alert(d.AppName); }
@Url.Action("Visualization", "StatsLocation", new{ appId=d.AppId, userId=d.UserId})
其中d有AppId,还有UserId

我们现在要做的是为click事件创建重定向,调用action方法以及来自d的参数。这意味着当您单击d3.js元素时,您将被重定向到具有预设参数的其他页面。

我们已经尝试过以下方法:

window.location.href = "/StatsLocationController/Visualization/appId=" + d.AppIdentifier + "/userId=" + d.DeviceId
我们还尝试使用window.location.replace(),但都没有成功,我想我们还没有找到actionLink的正确语法,但在谷歌搜索时很难找到示例。我们非常感谢能得到的任何帮助

而不是:

window.location.href = Html.ActionLink("Visualization", "StatsLocationController", new{ appId=d.AppId, userId=d.UserId}, new{})
尝试:

这是假设您已正确设置了路由

编辑:

使这项工作起作用的路由类型如下:

routes.MapRoute(
    "MyRoute", 
    "{controller}/{action}/{appId}/{userId}", 
    new {
         controller = "Home", 
         action = "Index", 
         appId = UrlParameter.Optional, 
         userId = UrlParameter.Optional 
    });
第二次编辑

我刚刚注意到您正在调用控制器
StatsLocationController
-除非您的C#类被调用
StatsLocationControllerController
-这是错误的。Asp.Net MVC假定对于控制器,将有一个名为
StatsLocationController
的类,因此您应该引用不带
controller
部分的控制器。因此,在本例中,您的控制器应被称为
StatsLocation
,这将使URL如下所示:

public ActionResult Visualization(String appId = "", String userId = "")
.on("click", function (d, i) {
        // just as an example use for the click-event. 
        alert(d.AppName); }
@Url.Action("Visualization", "StatsLocation", new{ appId=d.AppId, userId=d.UserId})

我忘了我没有回答就留下了这个

simonlchilds已经解决了问题,我们在调用中包含了
控制器

最后一个电话是这样的:

window.location.href = "/StatsLocation/Visualization/appId=" + d.AppIdentifier + "/userId=" + d.DeviceId
其中
StatsLocation
是控制器的名称


这是一个愚蠢的错误,但至少它有一个简单的解决方案,也许它可以帮助别人。

不起作用,在谷歌chrome控制台中,我得到了与html.ActionLink相同的错误。错误是“意外标识符”,它似乎不理解我创建的新对象。Visual Studio的intellisense还告诉我,如果我将鼠标悬停在@url上,“条件编译将关闭”。路由看起来如何?您是否确保将调用用引号括起来?如果没有,您将不会为
href
属性分配
字符串
,这将导致该属性崩溃。感谢您的帮助,我将在明天的工作日即将结束时对此进行测试,如果我的答案正常,我将标记您的答案。最后一件事,@Url.Action是MVC helper for HTML,对吗?我需要在javascript中创建URL,因为我必须在javascript中进行重定向调用。您回答自己的问题时说我的答案解决了问题,然后接受了您自己的答案-似乎是合法的