Asp.net mvc 2 BuildUrlFromExpressionForAreas不生成restful URL

Asp.net mvc 2 BuildUrlFromExpressionForAreas不生成restful URL,asp.net-mvc-2,Asp.net Mvc 2,我有一个以id作为参数的控制器操作。restful方式调用它是:/Controller/Action/id,如果我使用ActionLink帮助程序(如下所示),则正确生成URL Html.ActionLink(linkText, action, controller, new { id = myid }) 但是,我需要获取url才能在新窗口中打开页面。我尝试使用BuildUrlFromExpressionForAreas,但它提供了以下格式的url:/Controller/Action?id

我有一个以id作为参数的控制器操作。restful方式调用它是:/Controller/Action/id,如果我使用ActionLink帮助程序(如下所示),则正确生成URL

Html.ActionLink(linkText, action, controller, new { id = myid }) 
但是,我需要获取url才能在新窗口中打开页面。我尝试使用BuildUrlFromExpressionForAreas,但它提供了以下格式的url:/Controller/Action?id=myid

Html.BuildUrlFromExpressionForAreas<MyController>(t => t.Action(myid))
Html.BuildUrlFromExpressionForAreas(t=>t.Action(myid))
这不起作用-我遇到以下异常:

参数字典包含方法“System.Web.Mvc.ActionResult Resume(System.Guid)”的不可为null类型“System.Guid”的参数“id”的null条目

我是否应该使用其他助手方法


谢谢

希望有更好的方法,但同时,我的解决方案是:

1-将“动作链接”类添加到动作链接

ActionLink(linkText、action、, 控制器,新建{id=myid},新建{ @class='action-link'})

2-使用jquery获取生成的url并将其绑定到click事件,然后将href设置为#

       $(document).ready(function () {
           $(".action-link").each(
               function (index, el) {
                   var url = $(this).attr("href");
                   $(this).attr("href", "#").bind("click",
                       function () {
                           var options = "resizable=yes,scrollbars=yes,toolbar=no,status=no,menubar=no";
                           window.open(url, "Interview", options, true);
                       });
               }
           );
       });