我有一个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 - 接受的答案是正确的做法吗?
答案 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>