【问题标题】:How can I pass a ViewBag from controller to View(Ajax Url)如何将 ViewBag 从控制器传递到 View(Ajax Url)
【发布时间】:2019-06-29 10:09:32
【问题描述】:

** 控制器代码**

我的Controller 和方法get_curent_LoanNumber 中有以下代码

public JsonResult (string loan_code)
{
    try
    {
        using (sqlConnection)
        {
            dynamic loanno = sqlConnection.Query("get_loan_number", new {loan_code }, 
            commandType: CommandType.StoredProcedure).SingleOrDefault();

            ViewBag.currentLoanNumbe= loanno.LoanNo;

            return Json(loanno, JsonRequestBehavior.AllowGet);
        }
    }
    catch (Exception)
    {
        throw;
    }
}

查看代码 这是View中的代码,JavaScript函数savePayslipInfo发出Ajax请求。

 function () {

    console.log('@ViewBag.currentLoanNumbe');
    $.ajax({
        type: "POST",
        url: "http://localhost:1079/loanapplication/save_Payslip_Info/?loan_no" + '@ViewBag.currentLoanNumbe',
        data: {
            //loan_no: $(loan_no).val(),
            basic_salary: $("#basic_salary").val(),
            house_allowance: $("#house_allowance").val(),
            other_allowance: $("#other_allowance").val(),
            other_payment: $("#other_payment").val(),
            total_deduction: $("#total_deduction").val()
        },
        success: function () {
            $('#msg').html("Payslip info saved successfully").fadeIn('slow');
            $('#msg').delay(4000).fadeOut('slow');
        }
    });
}

【问题讨论】:

  • 如果您要返回 JSON,您需要使用ViewBag。相反,您想要的数据必须在 JSON 有效负载本身中。所以把它合并到loanno
  • 您的 viewbag 包含来自 loanno 的值。但是您已经在 AJAX 调用中返回了 loanno,因此 viewbag 不包含您尚未提供的任何信息。你不需要它。而且这也没有任何意义...当您返回视图时使用 viewbag,但在这里您返回的是 JSON,而不是视图。

标签: javascript c# json viewbag


【解决方案1】:

这不是 MVC 的工作方式。您没有从您的操作方法返回视图。您正在返回一个 JSON。因此,没有任何视图与操作方法相关联。您实际上所做的是将操作方法​​用作 API 并使用 AJAX 从 Javascript 调用它,这与从操作返回和绑定视图不同。您的 ViewBag 将无法访问,因为您在此处使用的 View 不是由问题中的 Action 方法呈现的。

【讨论】:

  • 那么在这种情况下,我将如何实现我的目标?,@Shahzad
  • @CheruiyotAKirui 要么将数据与要返回的 JSON 一起传递,要么让操作返回一个 View,然后您可以使用 Viebbag 和那里的值
  • 我不想重新加载我的页面,正如您所见,我已经在 json 中返回了loanno。这给了我结果,所以我的问题是当我在第二个选项卡中时,我想使用返回的 loanno(它在部分视图中)将数据插入另一个表。所以我尝试使用 Viewbag,我认为它仍然可以保值。
  • @CheruiyotAKirui ViewBag 每个 http 请求 所以 I thiught it will still hold my value 不正确。它不会持有它。
  • @CheruiyotAKirui 你可以做的是通过返回一个视图来加载你的主页。如果需要,让 Viewbag 返回您的数据。然后使用 AJAX 加载所有选项卡的选项卡数据并从 Action 方法返回 JSON。这样,您返回视图的基本操作可以将数据传递给您,即借出号码,您不必在选项卡切换时重新加载页面。
猜你喜欢
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
相关资源
最近更新 更多