使用API​​和MVC4显示所有模型

时间:2015-10-14 09:27:52

标签: c# asp.net-mvc-4 asp.net-web-api

我创建了一个API应用程序,我可以在其中执行crud操作。但是,我无法在我的cshtml中显示所有模型。 我创建了我的API控制器,它有getAllUsers方法,在我的家庭控制器中,我只调用了索引视图。在我看来,我有一个调用getAllUsers方法的脚本。以下是我的代码: API控制器:

namespace WebApiQues.Controllers
{
    public class UserController : ApiController
    {
        private WebApiQuesEntities db = new WebApiQuesEntities();

        //Get all users
        public IEnumerable<User> GetAllUsers()
        {
            var UserList = from s in db.Users
                           orderby s.Id
                            select s;

            return UserList;
        }
}

控制器:

 public class HomeController : Controller
{
    //
    // GET: /Home/

    public UserController userController = new UserController();

    public ActionResult Index()
    {
        //var UserList = userController.GetAllUsers();
        //ViewBag.UserList = UserList;
        return View();
    }

}

Index.cshtml:

@{
ViewBag.Title = "Index";
}

@model IEnumerable<WebApiQues.Models.User>
<div>

  <div>
    <h2>All Products</h2>
    <ul id="products" />
  </div>
  </div>

  <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
  <script type="text/javascript">
      var uri = 'api/user/getallusers';

      $(document).ready(function () {
          // Send an AJAX request
          $.getJSON(uri)
          .done(function (data) {
              // On success, 'data' contains a list of products.
              $.each(data, function (data) {
                  // Add a list item for the product.
                  $('<li>').appendTo($('#products'));
              });
          });
      });
</script>

我认为问题来自cshtml中的脚本,但我无法找到我做错的地方。有什么想法吗?

EDITED: 如果我添加console.log(数据),我可以看到数据包含用户列表。

2 个答案:

答案 0 :(得分:3)

试试这个:

将您的jquery脚本添加到scripts section:

@section scripts
{
 <script type="text/javascript">
     $(function() {
         var uri = 'api/user/getallusers';
         $.getJSON(uri, function(data) {
             $.each(data, function(index, v) {
                 $('#products').append('<li>'+v.PropertyName+'</li>'); 
                 //Change property name to the property of your object
             });
         });
     });
 </script>
}

$。每个都需要回调函数中的两个参数:数组的索引和实际的数据对象本身:

  

回调类型:Function(Integer indexInArray,Object value)   将在每个对象上执行的函数。

http://api.jquery.com/jquery.each/

答案 1 :(得分:0)

假设用户有姓名&#39;属性,试试这段代码

$.getJSON(uri)
          .done(function (data) {
              // On success, 'data' contains a list of products.
              $.each(data, function (data) {
                  // Add a list item for the product.                  
                  $('#products').append('<li>'+data.Name+'</li>');
              });
          });