如何在mvc 4中打开视图传递参数?

时间:2016-03-15 07:16:52

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

我不知道如何通过函数javascript打开视图传递参数。示例:使用pass参数categoryid和productid

打开一个DetailProduct视图
       function DetailProduct(cid, pid) {
        window.location.replace('@Url.Action("Detail", "Product", new { CategoryID = cid , ProductID = pid })');
    }

我收到错误The name cid does not exist in the current contextThe name pid does not exist in the current context 非常感谢。

1 个答案:

答案 0 :(得分:1)

在呈现视图时,在服务器上执行

Url.Action,而cidpid是客户端变量,因此它们在服务器上技术上不存在。

如果您的操作中CategoryIDProductID是可选参数:

public ActionResult Product(int? CategoryID, int? ProductID)

然后你可以做类似

的事情
var url =  '@Url.Action("Detail", "Product")' + '?CategoryID=' + cid + "&ProductID=" + pid

您还可以为此操作创建特定的用户友好网址。在RouteConfig.cs文件内添加路线:

routes.MapRoute(
                name: "ProductDetails",
                url: "/Detail/Product/{CategoryID}/{ProductID}",
                defaults: new { controller = "Detail", action = "Product", CategoryID = UrlParameter.Optional, ProductID = UrlParameter.Optional });

然后你就可以创建一个这样的网址:

var url =  '@Url.Action("Detail", "Product")' + '/' + cid + "/" + pid;

最终看起来像http://.../Product/Detail/1/2cid = 1

pid=2