2016-03-15 33 views
0

我不知道如何通过函数javascript打开视图传递参数。例如:打开与通参数类别ID视图DetailProduct和产品ID如何在mvc 4中打开查看传递参数?

 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 感谢这么多。

+0

YOUT能后的控制器中相应操作的代码? –

+0

'@ Html.Action()'是剃须刀代码,并在传递给视图之前在服务器上进行评估。 'cid'和'pid'是javascript变量,在那个时候甚至不存在。您不能将它们添加为路由参数。您需要手动生成url =例如''@ Url.Action(“Detail”,“Product”)'+'?CategoryID =“+ cid' –

回答

1

Url.Action在呈现视图时在服务器上执行,而cidpid是客户端变量,因此它们在技术上不存在于服务器上。

如果CategoryIDProductID是在动作可选参数:

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

,那么你可以这样做

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

您还可以创建这个动作的特定用户友好的URL。里面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 = 1pid=2