0

当谈到 MVC4 Web 开发时,我是一个新手,我正在努力解决一些问题。

基本上,我有以下内容:

public class maincontroller: Controller
{
    private MyRepository myRepository;

    public mainController()
    {
         myRepository= new MyRepository(); 
    }

    public ActionResult Index()
    {
        var mystuff = myRepository.GetPrograms();            
        return View(mystuff);
    }


    public ActionResult MyStuff()
    {
        var mystuff = myRepository.GetStuff(1);
        return Json(mystuff , JsonRequestBehavior.AllowGet);
    }
}

假设在我的“MyRepository”类中我有两个功能:

一个正在设置“mystuff”的:

 public MyRepository()
    {


        for (int i = 0; i < 8; i++)
        {
            programs.Add(new MyStuff
            {
                Title = "Hello" + i,
                content = "Hi"

            });
        }
    }


and second function that gets Stuff:
public List<MyStuff> GetStuff(int pageNumber = 0)
    {
        return stuff
            .Skip(pageNumber * pageCount)
            .Take(pageCount).ToList();
    }

一切正常。我的意思是我能够遍历“东西”并显示在视图上......

问题是我想MyStuff()使用 AJAX 显示(返回 Json ),然后将所有内容附加stuff到视图中。我怎么做?

我已经用头撞墙了大约 4 个小时,但无法正常工作。

请任何帮助将不胜感激。

谢谢你。

4

1 回答 1

0

在最直接的层面上,您可以使用类似这样的方式简单地将 HTML 附加到您的文档中(假设您使用的是 JQuery,因为它更容易):

<div id="container"></div>

// make AJAX call to "MyStuff" action in the current controller
$.get(@Url.Action("MyStuff", function(data) {

    // cycle through each item in the response
    $.each(data, function(index, item) {

        // construct some HTML from the JSON representation of MyStuff
        var html = "<div>" + item.StuffProperty + "</div>";

        // append the HTML to a container in the current document
        $("#container").append(html);
    });
});

这会将集合中每个项目的一些 HTML 添加到容器元素中,使用(例如)类中StuffProperty的。MyStuff


一旦变得过于复杂,像这样手动添加 HTML 可能会很麻烦——此时您应该考虑使用以下任一方法:

  1. 部分视图(直接从控制器返回 HTML,而不是 JSON)
  2. 一个客户端模板引擎,如 Mustache.js、Underscore.js 等,用于将 JSON 转换为 HTML。
于 2012-12-02T01:08:43.537 回答