如何通过调用window.open将值从Jquery传递给MVC Controller?

时间:2013-09-19 05:14:32

标签: jquery asp.net-mvc asp.net-mvc-4

我想打开新的弹出窗口,点击按钮,其中包含pdf。在按钮单击时,我调用了以下jquery。在Jquery中,我获得了“Url”的价值。 “Url”包含以下内容

ControllerName / ViewPdf / 23bbe2eh3be //编码形式的pdf路径。

但是我无法找到控制器中操作的路径,而不是路径我得到了空值。 现在我的问题是,如何在行动中获取路径而不是接收空?

Jquery的:

function ViewPdf( url) {
    var winW = 800;
    var winH = 330;
    var winX = (screen.availWidth - winW) / 2;
    var winY = (screen.availHeight - winH) / 2;
    var features = 'left=' + winX + ',top=' + winY + ',width=' + winW + ',height=' + winH + ',toolbar=0,location=0,status=0,scrollbars= 1,resizable=1';
    PdfWindow = window.open(url, null, features);
}

控制器:

public ActionResult ViewPdf(String id)
        {
           //some Code
        }

2 个答案:

答案 0 :(得分:2)

你应该这样做

//this should call your controller method 
window.location = '@Url.Action(ActionName, controllername)' + JSON.stringify(filename);

当您尝试为窗口分配功能时,请查看这些链接

https://developer.mozilla.org/en-US/docs/Web/API/window.open

http://www.w3schools.com/jsref/met_win_open.asp

答案 1 :(得分:2)

您应该定义此路线

routes.MapRoute("ViewPdf", "HomeController/ViewPdf/{path}", new { controller = "HomeController", action = "ViewPdf", path = UrlParameter.Optional });

你的行动:

public ActionResult ViewPdf(string path) { //some Code }

或者您应该在查询字符串中定义参数名称:

/HomeController/ViewPdf?path={your_path_here}