我使用jquery ajax調用(獲取)一個動作,呈現一個partialview來創建(輸入)一個新產品。這個partialview的內容被插入到一個完整頁面的vid標籤中,該頁面有一個base _layout。下面的Ajax代碼:登錄頁面只重定向到一個裸體的局部視圖
$("#Create").on('click', function (e) {
//debugger;
e.preventDefault();
$.ajax({
type: "GET",
data: { returnUrl: String(window.location) }, <-- passing in the Url
url: "/CreateGroup/CreateGroup",
dataType: 'html',
success: function (data) {
$("#group-list").html(data);
},
});
})
.....
<div id="group-list">
@Html.Partial("PagedGroupList")
</div>
行動:
// GET: /Create/
[Authorize]
public PartialViewResult CreateGroup(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
CreateGroupModel cgm = new CreateGroupModel();
cgm.ReturnUrl = returnUrl;
cgm.group = new Static_Group();
return PartialView("CreateGroup", cgm);
}
現在,如果我點擊創建按鈕之前先登錄,如預期eveerything是罰款。問題是當沒有登錄的時候首先點擊CREATE按鈕。由於[授權],登錄頁面將首先登錄,並且在登錄後,它將一起重定向回到我的CREATE partialview。問題在於登錄頁面重定向回NAKED創建的partialview,而沒有任何父視圖的元素。如果CREATE頁面不是partialview,則登錄頁面將完全重定向到完整頁面。
我使用MVC4默認登錄。我試圖使登錄頁面成爲ajax表單提交併使用OnSuccess在登錄頁面和創建partialview中調用document.location,但是我發現它是partialview的returnUrl問題。我也嘗試了Request.UrlReferrer.AbsoluteUri,但它給出了「/CreateGroup/CreateGroup?returnUrl=http%3A%2F%2Fwww.dev.com%3A22531%2F」或完整的相同URL:http://www.dev.com:22531/CreateGroup/CreateGroup?returnUrl=http://www.dev.com:22531/。如果您將Url放入瀏覽器中,它也會顯示純粹的partialview。
我相信我一定錯過了一些顯而易見的事情,這應該是一種常見的情況,但我無法從Google搜索中找到任何線索。有沒有一個URL在其父視圖內一起顯示partialview?如果不是,那麼可以重定向回偏向視圖的前一個視圖?
看起來沒有用於其主頁的partialview的URL。我現在能想到的解決方案是將登錄重定向到主機頁面,並在Model或viewbag或會話temp中傳入partialview名稱,以使用右部分視圖再次呈現整個頁面。