BuildUrlFromExpressionForAreas不会生成restful URL

时间:2011-01-11 17:42:12

标签: asp.net-mvc-2

我有一个控制器动作,它将id作为参数。调用它的另一种方法是:/ 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))

这不起作用 - 我得到以下异常:

参数字典包含非可空类型'System.Guid'的参数'id'的空条目,用于方法'System.Web.Mvc.ActionResult Resume(System.Guid)'

我应该使用另一种辅助方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

1 - 将“action-link”类添加到操作链接

  

Html.ActionLink(linkText,action,   controller,new {id = myid},new {   @类= '动作链接'})

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);
                       });
               }
           );
       });