【问题标题】:Return ViewModel Data to Javascript function MVC 4?将 ViewModel 数据返回到 Javascript 函数 MVC 4?
【发布时间】:2014-01-10 07:55:17
【问题描述】:

我正在尝试将视图模型的数据传递给一个 js 方法,然后我需要从那里将 VM 传递给另一个控制器方法以显示数据。

这是我所做的:

$(document).ready(function () {

    var content = GetHomeContent('/Home/CastContent');
    if (content) {
        saveBDContent('/Message/Details/', content);
    }

});

function GetHomeContent(url) {
    var modelData;
    $.ajax({
        url: url,
        cache: false,
        async: false,
        type: "GET",
        contentType: 'application/json',
        success: function (data) {
            if (data) {
                modelData = data;
            }
        },
        error: function (data) {
            status = false;
        }
    })

   return modelData;
};

function saveBDContent(url, data) {
    var status = false;

    $.ajax({
        url: url,
        cache: false,
        async: false,
        type: "GET",
        data: JSON.stringify(data),
        contentType: 'application/json',
        success: function (data) {
            if (data == "200") {
                status = true;
            }
        },
        error: function (data) {
            status = false;
        }
    })

    return status;
};

面临的问题是,我从方法中检索的内容显示了 ViewModel 的命名空间。当我将其传递给新控件时,Viewmodel 内容将变为空。

我需要添加任何东西来获取/传递正确的内容吗?

Dummy 方法框架

    public ActionResult CastContent()
    {
        CastVM broadcastVM = new CastVM();


        return Json( broadcastVM);

    }

【问题讨论】:

    标签: c# javascript .net asp.net-mvc json


    【解决方案1】:

    我在我的控制器方法中错过了 JsonRequestBehavior.AllowGet,我已经添加并且结果非常完美。

    public ActionResult CastContent()
        {
            CastVM broadcastVM = new CastVM();
    
    
            return Json( broadcastVM,JsonRequestBehavior.AllowGet);
    
        }
    

    我还在 jquery 方法中将 HTTP 状态设置为 post

    【讨论】:

      【解决方案2】:

      在控制器中做类似的事情:

      public JsonResult QuickSave(BookEntry bookEntry) {
          YourViewModel model = new YourViewModel();
          return Json(model);
      }
      

      编辑 >> 相关的 Javascript 代码是:

      $.ajax({
          type: "POST",
          url: 'The URL',
          data: 'The JSON data',
          dataType: "json",
      
          success: function (theViewModel) {
              // Do some JS stuff with your model
          },
      
          error: function (xhr, status, error) {
              // Do some error stuff
          }
      });
      

      【讨论】:

      • 请看我的编辑。这是一些有效的代码,所以我知道它有效。
      • 感谢 Laurent PerrucheJ。正如您发布的那样,我已将 Ajax 方法类型更改为 POST,除了我们需要添加 JsonRequestBehavior.AllowGet 之外,它正在工作。我已经更新了答案。
      猜你喜欢
      • 1970-01-01
      • 2017-05-05
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多