0

我有这个链接

@Ajax.ActionLink("create poll question", 
                 "CreatePoll", 
                 new { id = Model.DebateID }, 
                 new AjaxOptions
                 {
                   UpdateTargetId = "poll-entry-box",
                   InsertionMode = InsertionMode.Replace,
                   HttpMethod = "GET"
                 })

它指向具有 [Authorize] 属性的操作。登录有效,但 returnURL 为空,因此它只是重定向到索引页面。

有没有办法手动设置 returnURL ?

笔记

我正在使用此处描述的方法http://haacked.com/archive/2011/10/04/prevent-forms-authentication-login-page-redirect-when-you-donrsquot-want.aspx因为正在加载登录页面在我的偏里面。

4

2 回答 2

0

一种可能的选择是使用设置查询字符串.OnComplete的 JavaScript 函数设置属性。returnUrl

您可以实现类似于此的功能:

var setReturnUrl(url) {
    var currentUrl = window.location;
    if(-1 != currentUrl.indexOf('returnUrl')) {
        var x = currentUrl.split('?');
        for(var i=0;i<x.length;i++) {
            if(-1 != x[i].indexOf('returnUrl')) {
                currentUrl = currentUrl.replace(x[i], 'returnUrl=' + url);
            }
        }
    } else {
        currentUrl = currentUrl + '&returnUrl=' + url;
    }
    window.location = currentUrl;
};
于 2012-07-09T02:57:16.350 回答
0

关于什么,

     @Ajax.ActionLink("create poll question", 
"CreatePoll", new { id = Model.DebateID, returnUrl = "YOUR_URL" } ...

更新:

已经澄清,returnUrl 只为 . 我们需要做的是修复 href 参数。

我建议创建您自己的可能处理 returnUrl 的@Ajax.ActionLink 版本。

public static MvcString ActionLink(this AjaxHelper ajaxHelper, string actionName, string returnUrl, object routerValues)
{
  // ...
}

在此方法中,您可以使用 TagBuilder 类来生成链接,以满足您的需要。看看CodePlex是如何实现 Ajax.ActionLink 的。

于 2012-07-09T05:25:06.137 回答