将Url助手与Web窗体一起使用

时间:2014-12-21 21:25:20

标签: asp.net asp.net-mvc webforms

我有一个webforms应用程序我已经添加了一个MVC区域,在那里我有一个名为MyController的Controller。

我需要在Web表单应用程序的母版页中执行类似下面的操作。这是从我拥有的另一个网络应用程序复制的,它都是MVC 5.

所以在我的应用程序的布局页面中我有:

<script type="text/javascript">
    // assign values used in core js file
    returnUrl = '@Url.Action("MyAction", "My", new { returnUrl = @Request.Url.AbsoluteUri })';
    anotherUrl = '@Url.Action("MyAction2", "My")';
</script> 

在我的核心js文件中,返回url用于ajax调用,如下所示:

 $.ajax({
            url: returnUrl, // return url gets set form _Layout.cshtml
            type: 'GET',
            success: function (data) {
                alert("yay");
            },
            error: function (xhr) {
                alert("failed");
            }
        });

无论如何,我可以在WebForms中使用相同的功能来生成Urls,以便为这些ajax网址转到MyController。

我遇到了这个answer - 接受的答案是正确的做法吗?

1 个答案:

答案 0 :(得分:1)

是的,你所接受的答案是正确的答案,除了...请不要在你的标记中添加所有这些代码。将它放在后面的代码中,并使用URL公开属性

在你的代码中放置:

public string ReturnUrl
{
   get
   {
       return urlHelper.RouteUrl("MyAction", "My", new { returnUrl = Request.Url.AbsoluteUri });
   }
}

您还应该添加一个名为urlHelper的字段,类型为System.Web.Mvc.UrlHelper,并将此代码添加到Page_Init事件

var requestContext = new System.Web.Routing.RequestContext(
       new HttpContextWrapper(HttpContext.Current),
       new System.Web.Routing.RouteData());
urlHelper = new System.Web.Mvc.UrlHelper(requestContext);

在您的表单中填写

<script type="text/javascript">
    // assign values used in core js file
    returnUrl = <%= ReturnUrl %>
</script>