在 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 以从控制器中获取值的主要内容,如果未能解决你的问题,请参考以下文章

带有 Jquery 模态形式的 asp.net MVC

如何获取数据以从 NSURLSessionDataTask 返回

Asp.net mvc基础Controller给View传递数据的方式

调用 get 操作时未设置 ViewBag 属性

Sencha Touch:如何更新数据存储以从控制器列出

mvc jquery 修改 viewbag