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

どうですか、

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

アップデート:

returnUrl が に対してもう 1 つの属性を生成することが明らかになりました。代わりに、href パラメータを修正する必要があります。

returnUrl を処理できる独自のバージョンの @Ajax.ActionLink を作成することを提案します。

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

このメソッド内で、TagBuilder クラスを使用して、必要に応じてリンクを作成できます。Ajax.ActionLink の実装方法をCodePlexで確認してください。

于 2012-07-09T05:25:06.137 に答える
0

考えられるオプションの 1 つは、クエリ文字列.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 に答える