Javascript 如何将ViewBag从控制器传递到视图(Ajax Url)
**控制器代码** 我的Javascript 如何将ViewBag从控制器传递到视图(Ajax Url),javascript,c#,json,viewbag,Javascript,C#,Json,Viewbag,**控制器代码** 我的控制器中有以下代码和方法获取当前贷款编号 public JsonResult (string loan_code) { try { using (sqlConnection) { dynamic loanno = sqlConnection.Query("get_loan_number", new {loan_code }, commandType: CommandType.
控制器中有以下代码
和方法获取当前贷款编号
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;
}
}
查看代码
这是视图中的代码,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');
}
});
}
MVC不是这样工作的。您没有从操作方法返回视图。您正在返回一个JSON。因此,不存在与action方法关联的视图。实际上,您所做的是将action方法用作API,并使用AJAX从Javascript调用它,这与从action返回和绑定视图不同。您的ViewBag将无法访问,因为您在此处使用的视图不是由问题中的操作方法呈现的。这不是MVC的工作方式。您没有从操作方法返回视图。您正在返回一个JSON。因此,不存在与action方法关联的视图。实际上,您所做的是将action方法用作API,并使用AJAX从Javascript调用它,这与从action返回和绑定视图不同。您的ViewBag将无法访问,因为您在此处使用的视图未通过问题中的操作方法呈现。如果您返回JSON,则不需要使用ViewBag
。相反,您需要的数据必须在JSON负载本身中。因此,将其合并到loanno
中。您的viewbag包含loanno中的值。但是您已经将loanno返回到AJAX调用,因此viewbag不包含您尚未提供的任何信息。你不需要它。这也没有任何意义……返回视图时使用viewbag,但这里返回的是JSON,而不是视图。如果返回JSON,则不需要使用viewbag
。相反,您需要的数据必须在JSON负载本身中。因此,将其合并到loanno
中。您的viewbag包含loanno中的值。但是您已经将loanno返回到AJAX调用,因此viewbag不包含您尚未提供的任何信息。你不需要它。这也没有任何意义…返回视图时使用viewbag,但这里返回的是JSON,而不是视图。那么在这种情况下,我将如何实现我的目标@Shahzad@CheruiyotAKirui要么将数据与返回的JSON一起传递,或者让该操作返回一个视图,然后您可以使用Viebbag及其值。我不希望我的页面被重新加载,正如您所看到的,我已经返回了json格式的loanno。这给了我结果,所以我的问题是,当我在第二个选项卡中时,我想使用返回的loanno(它在部分视图中)将数据插入到另一个表中。所以我试着使用Viewbag,我认为它仍然保持我的价值。@CheruiyotAKiruiViewbag
是根据http请求的,所以我认为它仍然保持我的价值
不是真的。它无法保存它。@CheruiyotAKirui您可以通过返回视图来加载主页。如果您需要,请使用Viewbag返回您的数据。然后使用AJAX和从Action方法返回JSON加载所有选项卡的选项卡数据。这样,返回视图的基本操作可以向您传递数据,即loand number,您不必在tab开关上重新加载页面。那么在这种情况下,我将如何实现我的目标@Shahzad@CheruiyotAKirui要么将数据与返回的JSON一起传递,或者让该操作返回一个视图,然后您可以使用Viebbag及其值。我不希望我的页面被重新加载,正如您所看到的,我已经返回了json格式的loanno。这给了我结果,所以我的问题是,当我在第二个选项卡中时,我想使用返回的loanno(它在部分视图中)将数据插入到另一个表中。所以我试着使用Viewbag,我认为它仍然保持我的价值。@CheruiyotAKiruiViewbag
是根据http请求的,所以我认为它仍然保持我的价值
不是真的。它无法保存它。@CheruiyotAKirui您可以通过返回视图来加载主页。如果您需要,请使用Viewbag返回您的数据。然后使用AJAX和从Action方法返回JSON加载所有选项卡的选项卡数据。这样,返回视图的基本操作可以向您传递数据,即loand number,并且您不必在tab开关上重新加载页面。