首页 > 解决方案 > 如何将 .ajax POST 制定为控制器中的操作方法并返回到另一个操作方法?

问题描述

我一整天都在努力使用这种方法,我的 .ajax POST 命中了正确的操作方法,但我的问题是在它对数据库执行 POST/Update 之后,我试图使用 RedirectToAction("Add_Contract" , "Contract", model) 来显示我的 "Add_Contract" 视图,我的问题是 "Add_Contract" 视图从不出现,"Add_Dataset" 重新出现。我需要使用 POST 更新数据集数据以便稍后重新加载,并显示“Add_Contract”的视图以便我可以输入合同信息,然后使用更新的合同信息重新加载“Add_Dataset”视图。

我认为我的问题出在 .ajax 公式中:

这是我的 Ajax(从 Add_Dataset 调用)

   $("#AddContract").click(function () {

        var contractAdd = "true";
        var datasetID = $("#dataset_Id").val();
        var datasetPK = $("#Dataset_PK").val();
        

        // Dataset Form Data
        var data = new FormData;
        
        data.append("datasetId", datasetID);
        data.append("Dataset_PK", datasetPK);
        data.append("add_Contract", contractAdd);

         

        $.ajax({

            type: "POST",
            url: key + "/Datasset/Add_Dataset/",
            data: data;
            contentType: false,
            processData: false,
            success: function (ajaxRespond) {
                if (ajaxRespond.dbUpdateResult == "success") {
                    
                }
            }

        })
    })

下面是动作方法:

   [HttpPost]
        public ActionResult Add_Dataset(Dataset model)
        {
            BaseUrl = ConfigurationManager.AppSettings["baseServiceUrl"];
          


            using (var client = new HttpClient())
            {
  
                //Passing service base url  
                client.BaseAddress = new Uri(BaseUrl);

                client.DefaultRequestHeaders.Clear();
                //Create a Dataset Record 
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                //HTTP POST
                var postTask = client.PutAsJsonAsync<Dataset>("api/datasets/" + model.Dataset_ID, model);
                postTask.Wait();

                var result = postTask.Result;
                if (result.IsSuccessStatusCode)
                {
                    if (!model.add_Contract)
                    {
                        return RedirectToAction("Add_Dataset");
                    } else
                    {
                        **return RedirectToAction("Add_Contract", "Contract", model);**
                    }
                }
            }


            return RedirectToAction("Add_Dataset");

        }

Add_Contract

 // Add a Contract
        [HttpGet]
        public async Task<ActionResult> Add_Contract(Dataset model)
        {
             var returned = new Contract();
             return View(returned);
}

标签: c#jqueryajaxasp.net-mvcredirect

解决方案


推荐阅读