从局部视图重定向到带有json数据对象的视图

本文关键字:视图 json 数据 对象 局部 重定向 | 更新日期: 2023-09-27 17:50:34

我有一个json数据对象,我需要从部分视图传递到视图与REDIRECT。

假设下面是我的局部视图(_createEmp)。cshtml): -

Note:- This partial view is in different view or page
 <script type="text/javascript">
 $(document).ready(function () {
    LoadData();
 });
 function LoadData() {
  $.ajax({
     type: "GET",
     url: baseURL + "Employee/GetEmpInfo",
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     async: true,
     success: function (data) {
        console.log(data);
        **EmpData** = data; // EmpData object
     },
     error: function (error) {
        console.log("Error: " + error);
     }
     });
   }
 </script>
 <div>
     <input type="submit" value="Save" onclick="SetEmpInfo()" />
 </div>

我想转移EmpData对象到一个不同的视图(让我们说NewEmp.cshtml),绑定的东西在该视图从传递的"EmpData对象"和打开该视图(或重定向查看NewEmp.cshtml)。

从局部视图重定向到带有json数据对象的视图

当您使用ajax时,您可以从您的操作返回URL,并在javascript中重定向它。

如果看不到你的控制器动作,你需要做这样的事情:

控制器

public ActionResult GetEmpInfo()
{
    // Do stuff
    return Json(new { success = true, redirecturl = Url.Action("GetEmpInfoSuccess") });
}

然后在javascript的成功处理程序中添加如下内容:

Javascript(在你的成功处理程序中)

success: function (data) {
            if (data.success == true)
            {
               window.location = result.redirecturl;
             }
        }

Employee/GetEmpInfo发出请求以获取数据并成功重定向到其他视图-听起来不正确

我认为你可以一次访问服务器完成所有这些:

  • 写一个Action,接收GetEmpInfo接收到的所有参数。我们叫它NewEmployee
  • 如果GetEmpInfo行动是你的代码,重用它的逻辑在NewEmployee行动得到EmpData。如果不是你的代码,你可以用HttpClient发出异步请求,得到EmpData - 所有这些都在服务器上执行
  • 一旦你有EmpData,你应该有一切你需要返回NewEmp视图。

在这种特殊情况下,根本不需要AJAX。您可以使用常规表单提交,以防您需要发布一些数据或只是重定向到NewEmployee动作。