从部分视图重定向到使用 json 数据对象查看

Redirect from partial view to view with json data object

我有一个 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 object" 绑定该视图中的某些内容并打开该视图(或重定向以查看 NewEmp.cshtml).

当您使用 ajax 时,您可以 return 来自您的操作的 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 - All this performed on the server
  • 一旦你有了 EmpData,你应该拥有 return NewEmp 视图所需的一切。

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