如何将ViewBag从控制器传递到View(Ajax Url)

时间:2019-06-29 10:09:32

标签: javascript c# json viewbag

**控制器代码**

我的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');
        }
    });
}

1 个答案:

答案 0 :(得分:2)

这不是MVC的工作方式。您没有从操作方法返回视图。您正在返回JSON。因此,没有渲染视图绑定到action方法。您实际上要做的是将action方法用作API,并使用AJAX从Javascript调用它,这与从action返回和绑定视图不同。您的ViewBag无法访问,因为问题中的Action方法无法呈现您正在使用的View。