【问题标题】:Reading model from model view returned from controller in angular从角度控制器返回的模型视图中读取模型
【发布时间】:2016-12-22 05:32:53
【问题描述】:

我有这样的动作方法

public async Task<ActionResult> Pc()
{
    var v = await context.pcs.Select(w => new Code.pcs
    {
        id = w.id,
        name = w.name,
        province = w.province
    }).ToListAsync();
    var jsonSerialiser = new JavaScriptSerializer();
    var json = jsonSerialiser.Serialize(v);
    return View(v);
}

我通过这样的角度 http 调用它

var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope, $http) {
    $http.get("Pc")
    .then(function (response) {
        $scope.myWelcome = response.data;
    });
});

我的问题是如何读取控制器在 angular 中返回的模型?response.data 正在转储整个视图的 html。

【问题讨论】:

  • 返回 json - return Json(v, JsonRequestBehavior.AllowGet);
  • @StephenMuecke 我希望 actionresult 被返回。查看不是 json
  • 但是您已经问过如何获取模型(return View() 不会返回模型 - 它返回 html)
  • @StephenMuecke 不只是返回 View()。里面有一个模型,比如 return View(v)
  • 这与它无关 - 视图引擎根据您的模型生成 html 并将其返回给客户端(而不是模型)。

标签: angularjs asp.net-mvc


【解决方案1】:

将控制器的返回类型更改为 stringJsonResult

public async string Pc()
{
    var v = await context.pcs.Select(w => new Code.pcs
    {
        id = w.id,
        name = w.name,
        province = w.province
    }).ToListAsync();
    var jsonSerialiser = new JavaScriptSerializer();
    var json = jsonSerialiser.Serialize(v);
    return json;
}

并在您的角度代码中进行修改以读取 json,然后根据您的要求将此数据绑定到 DOM

var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope, $http) {
    $http.get("Pc")
    .then(function (response) {
     $scope.myWelcome = response.data;
    });
});

【讨论】:

  • 我必须返回视图模型
  • 好的,但是您不能直接将viewmodel返回到angar http get方法响应,您必须将其转换为json作为响应。
  • 那么你的评论应该是答案
  • @Alex 正如您在问题中提到的“读取控制器以角度返回的模型” 角度所以这是您问题的答案,我认为不是吗?跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多