在asp.net mvc4中将值从控制器传递到视图

本文关键字:控制器 视图 net asp mvc4 | 更新日期: 2023-09-27 18:10:51

我有数据列表在我的api控制器。

我想把这个数据传递给视图使用类似于viewbag的东西。

我知道我们不能在apicontroller中使用viewbag,所以有没有其他选择

在asp.net mvc4中将值从控制器传递到视图

ApiControllers通常不返回视图。它们返回models,或者HttpResponseMessage。所以你可以有一个视图模型,它将包含所需的属性,然后让你的API动作返回这个视图模型。

你不应该这样做,API控制器只返回数据(XML, Json等)。所以你应该有两个控制器:

  • System.Web.Http。ApiControlle使用它返回数据集合,例如:

    public List<Company> Get()
    {
        return this._companyService.GetCompanies();
    }
    

    返回Json或XML格式的公司列表,而不是视图。

  • System.Web.Mvc。Controller用于返回没有数据的HTML,例如没有行或客户端模板的HTML表。

如何将两者联系起来?这个想法是用JavaScript在客户端呈现,有几个很好的理由这样做,主要的是你在两个完全分离的提要中有数据和表示,所以你将能够重用你的数据提要(例如在移动应用程序中)。

要在客户端渲染,最好使用一些JavaScript渲染引擎,看看http://handlebarsjs.com/.

使用Jquery.getJSON()从DOM或通过Ajax获取JSON和车把模板,选择一个DOM元素来插入生成的HTML。一旦你有了JSON,模板和容器使用下面的函数:

function RenderJson (json,template,container) {
    var compiledTemplate = Handlebars.compile(template);
    var html = compiledTemplate(json);
    $(container).html(html); //set new content
}

我知道这似乎是一个更复杂的过程,但如果你尝试一下,你就会看到它的优点,例如,你将能够分别测试你的数据馈送和数据表示。

希望有帮助