使用ajax将模型发送到控制器,asp.net mvc

时间:2014-05-01 07:16:23

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

我想知道完成这项任务的最佳方法是什么: 在我的索引方法中,我要么搜索,要么过滤或者只是采取 我的数据库中的数据。然后我发送n个项目进行查看。如果有超过n项 我需要做一些分页。据我所知,我可以再次查询我的数据库 过滤或搜索并接下来的n个元素,或者我可以以某种方式坚持所有 我的数据(过滤或搜索查询后收到的数据)和公正 从中获取下一个元素。据我所知,会议不是最好的方式 完成它,所以而不是这个类的IEnumerable

public class CatalogModel
{
    public string Price;
    public string deviceName;
    public string imgUrl;
} 

我决定使用这个课程

public class CatalogView
{
    public IEnumerable<CatalogModel> Catalog;
    public IEnumerable<Device> Devices;

    public CatalogView(IEnumerable<CatalogModel> catalog = null, IEnumerable<Device> devices = null)
    {
        Catalog = catalog;
        Devices = devices;
    }
}

我想把所有数据保存在

 public IEnumerable<Device> Devices 

此字段每次都将其发送给控制器, 但是我不知道如何从javascript访问它,所以我可以将其发回 用ajax。

是否可以这样做,并且它会比它更有效率 每次查询我的数据库。

谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 您应首先在接受CatalogView对象的控制器中执行操作。

  2. 要创建与C#对象类似的对象,可以使用此行

    var obj = @Html.Raw(Json.Encode(new CatalogView())
    
  3. 将代码修改为

    public class CatalogView
    {
        public IEnumerable<CatalogModel> Catalog;
        public IEnumerable<Device> Devices;
    
        public CatalogView(IEnumerable<CatalogModel> catalog = null, IEnumerable<Device> devices = null)
        {
            Catalog = catalog;
            Devices = devices;
        }
    
        public CatalogView ()
        {
            Catalog = new List<CatalogModel>();
            Devices = new List<Device>();
        }
    }
    

    并将所有公共字段设为公共属性,以便与JSON进行转换 4.对于javascript,您可以使用以下代码段

    $.ajax({
        type: "post",
        url: "@Url.Action("YourActionName","ControllerName")",
        data: JSON.stringify(obj),
        contentType: "application/json",
        success: function (details) {
            //execute on success
        }
    }); 
    
  4. 您应该使用http://www.json.org/js.html将您的对象转换为json