我有这个链接
@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,因为登录页面正在我的部分内部加载。
答案 0 :(得分:0)
一种可能的选择是使用设置returnUrl
查询字符串的JavaScript函数设置.OnComplete
属性。
你可以实现一个类似的函数:
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;
};
答案 1 :(得分:0)
怎么样,
@Ajax.ActionLink("create poll question",
"CreatePoll", new { id = Model.DebateID, returnUrl = "YOUR_URL" } ...
<强>更新强>
已经澄清了returnUrl,只产生了另一个属性。我们需要做的是修复href参数。
我建议创建自己的@ Ajax.ActionLink版本,它可以处理returnUrl。
public static MvcString ActionLink(this AjaxHelper ajaxHelper, string actionName, string returnUrl, object routerValues)
{
// ...
}
在此方法中,您可以使用TagBuilder类来生成符合您需求的链接。看看CodePlex如何实现Ajax.ActionLink。