微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Jquery 中调用 ViewBag 从控制器获取值

如何解决在 Jquery 中调用 ViewBag 从控制器获取值

我正在调用 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()");
        }
    });
}

解决方法

假设 HomeController 中名为 DeliveryDatebySupplier 的操作是设置 ViewBag.DeliveryDatebySupplier 的方法,那么不幸的是,这将不起作用。 >

脚本会在生成完整页面时生成,当时尚未设置该值。

我建议在您的脚本中调用 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
}
},

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。