[英]Dynamic Redirect from Url.Action
我正在使用通過用戶單擊按鈕時發生的Url.Action傳遞給Controller的值來構建對象。
$.post("@Url.Action("CreateObj", "ObjectController")", {
value: $value
})
在調用的方法中,我創建一個對象,為其分配一個ID,然后將該對象保存到數據庫中。
public void CreateObj(string value)
{
Object newObj = Object(value);
//Magic saving newObj to database
int id = newObj.objectId; //Saves the object's id to a variable for demo purposes
}
現在,我想立即重定向到該新對象的“編輯”頁面,其中URL為“ ./Object/Edit/”+ newObj.objectId。
我嘗試在C#CreateObj方法中進行重定向,嘗試通過ViewData傳遞objectId,以便可以在回調函數中進行重定向,但找不到任何一種方法可以正常工作。
如果創建對象之前我不知道ID,並且無法從視圖訪問它,該如何在創建對象后將用戶帶到“編輯”頁面? 我是否缺少簡單的東西?
您可以在創建對象的函數中使用回調,一旦創建了對象,便會觸發該回調,將對象ID傳遞給回調,然后在回調內部將用戶重定向到新頁面。
假設您的編輯操作方法如下所示
public ActionResult Edit(string value){
//your magic codes
}
您可以像正常函數調用一樣調用它。
public void CreateObj(string value)
{
Object newObj = Object(value);
//Magic saving newObj to database
int id = newObj.objectId; //Saves the object's id to a variable for demo purposes
Edit(id); // <-- Normal function call
}
這將自動重定向到編輯頁面。
由於您正在執行ajax請求,因此您的Action應該返回所創建對象的ID,並且您應該通過JS處理重定向。 因此,將Action的返回類型和值更改為:
public ActionResult CreateObj(string value) {
int id = newObj.objectId;
return Json(id, JsonRequestBehavior.AllowGet);
}
並在您的post()方法上注冊一個回調函數以執行重定向:
$.post("@Url.Action("CreateObj", "Object")", {
value:"value"
}).done(function (data) { // data represents the returned id
//handle success
window.location.href = `@Url.Action("Edit", "Object")/${data}`;
}).fail(function () {
//Handle failure
})
•檢查$ .post()在jQuery.post()上如何工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.