在 Jquery 中调用 ViewBag 以从控制器中获取值
Posted
技术标签:
【中文标题】在 Jquery 中调用 ViewBag 以从控制器中获取值【英文标题】:Call ViewBag in Jquery to get the value from controller 【发布时间】:2021-04-15 07:40:11 【问题描述】:我打电话给ViewBag.DeliveryDatebySupplier
来更新我的文本框或只是为了提醒。该值始终为null
。但是当我调试并检查控制器中的ViewBag
时,它具有日期值。
控制器
if (ds.Tables[0].Rows.Count == 1)
string dt = ds.Tables[0].Rows[0]["DeliveryDt"].ToString();
DateTime myDate = Convert.ToDateTime(dt);
dt = myDate.ToString("yyyy-MM-dd");
ViewBag.DeliveryDatebySupplier = dt.ToString();
//Session["NewDeliveryDate"] = dt.ToString();
jQuery
function getDeliveryDateBySupplier()
var _storeID = $('#ddlStoreID :selected').val();
var _SupplierID = $('#ddlSupplier :selected').val();
var url = "@Url.Content("~/Home/DeliveryDatebySupplier")";
$.ajax(
data:
StoreID: _storeID,
SupplierID: _SupplierID
,
type: 'POST',
cache: false,
dataType: 'json',
url: url,
success: function (result)
var newDeliveryDate = '@ViewBag.DeliveryDatebySupplier';
alert(newDeliveryDate);
,
error: function (ex)
alert("Error getDeliveryDateBySupplier()");
);
【问题讨论】:
【参考方案1】:假设 HomeController 中名为 DeliveryDatebySupplier 的动作是设置 ViewBag.DeliveryDatebySupplier 的方法,那么很遗憾,这将不起作用。 p>
该脚本将在生成完整页面时生成,当时尚未设置该值。
我建议不要使用 viewbag,而是在脚本中调用 DeliveryDatebySupplier 时返回该值。
控制器会是这样的
if (ds.Tables[0].Rows.Count == 1)
string dt = ds.Tables[0].Rows[0]["DeliveryDt"].ToString();
DateTime myDate = Convert.ToDateTime(dt);
dt = myDate.ToString("yyyy-MM-dd");
return new JsonResult
data = new
DeliveryDatebySupplier = dt.ToString()
;
jquery 会变成这样的
success: function (data)
if (data)
var newDeliveryDate = data.DeliveryDatebySupplier
alert(newDeliveryDate);
else
//Error
,
【讨论】:
以上是关于在 Jquery 中调用 ViewBag 以从控制器中获取值的主要内容,如果未能解决你的问题,请参考以下文章
如何获取数据以从 NSURLSessionDataTask 返回