首页 > 解决方案 > 如何通过局部视图从 ajax 成功中获取模型的特定数据

问题描述

我想获得模型在 ajax 成功中的特定价值。我不能在这里使用 Json 结果,因为我还需要在具有部分视图的 div 容器中加载模型值。

这是我的模型

public class ProductModel
{
    public int ProductId { get; set; }

    public decimal? Cost { get; set; }

    public string Description { get; set; }

    public bool IsCostUpdated { get; set; }
}

我只想在 ajax 成功中获取 IsCostUpdated 的值。在控制器中,我必须返回强类型的局部视图。这是代码

[HttpPost]
public ActionResult CheckProductCost(ProductModel model)
    {
        ModelState.Clear();
        using (var db = DataContext.Db)
        {
            model.IsCostUpdated = model.CheckUpdate(db);
        }

        return PartialView("ProductDataTable", model);
    }

这是我的ajax调用代码

$.ajax({
        url: productCostUrl,
        dataType: 'html',
        type: 'POST',
        data: $('body').find('.productTable').closest('.dataComponent').find(':input').serialize(),
        success: function (d) {
            var isSuccess = d.IsCostUpdated; [I want this value]

           $('body').find('.productTable').html(d)
        }
    });

标签: c#jqueryajaxasp.net-mvc

解决方案


可以JsonResult在当前的ActionResult. 只需检查正在发出的请求是否是ajax请求。你ActionResult会变成这样:

[HttpPost]
public ActionResult CheckProductCost(ProductModel model)
{
    ModelState.Clear();
    using (var db = DataContext.Db)
    {
        model.IsCostUpdated = model.CheckUpdate(db);
    }

    if (Request.IsAjaxRequest()) // THIS IS AVAILABLE INSIDE THE SYSTEM.WEB.MVC ASSEMBLY
        return Json(new { IsCostUpdated = model.IsCostUpdated });

    return PartialView("ProductDataTable", model);
}

推荐阅读