簡體   English   中英

從網址動態重定向

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM