asp.net - 如何将我的模型数据(列表)与另一个 View 模型数据(列表)映射 MVC asp.net

标签 asp.net json asp.net-mvc database viewmodel

在这种情况下如何将我的模型数据(列表)映射到另一个 View 模型数据(列表)?

这是我所拥有的:

我的 json View 模型

public class JsonViewModel
{
    public List<JsonItem> Items { get; set; } 
}

public class JsonItem
{
    public string Name { get; set; }
    public int Unit { get; set; }
    public decimal Price { get; set; }
    public IEnumerable<Item> ItemStock { get; set; } 
}

我的主要模型

public class Item
{
    public int ItemId { get; set; }
    public string Name { get; set; }
    public int QuantityInPack { get; set; }
    public int Quantity { get; set; }
    public decimal Price { get; set; }
    public bool IsHidden { get; set; }
}

应该这样映射:

  • Item.QuantityInPack = JsonItem.Unit
  • Item.Price = JsonItem.Price

其中 Item.Name = JsonItem.Name


Controller

public ActionResult Index()
{
    // 1. Perform HTTP request to retrieve the JSON.
    var webClient = new WebClient();
    string rawJson = webClient.DownloadString("http://my_json_data");

    // 2. Parse the JSON.
    var jsonRootObject = JsonConvert.DeserializeObject<JsonViewModel>(rawJson);

    // 3. Map to viewmodel
    var viewModel = new JsonViewModel
    {
        Items = jsonRootObject.Items.Select(i => new JsonItem
        {
            Name = i.Name,
                    Unit = i.Unit,
                    Price = i.Price
        }).ToList()
    };



    /// var TestItem = db.Items.ToList();
    /// TestItem.QuantityInPack = JsonItem.Unit
    /// TestItem.Price = JsonItem.Price
    ///     where Item.Name = JsonItem.Name
    ///
    /// (I know it's a bad, but I wanted to explain what I mean)
    /// Here i should map data in some way
    /// 
    ///

    // 4. Return mapped model to view
    return View( TestItem??? );
}

最佳答案

如果我没理解错的话,你想将 JsonViewModel 与主模型同步并返回同步的主模型以供查看:

public ActionResult Index()
{
    ...
    var itemList = db.Items.ToList();
    if (jsonRootObject.Items != null)
    {
        jsonRootObject.Items.ForEach(i =>
        {
            var item = itemList.FirstOrDefault(p => p.Name = i.Name);
            if (item != null)
            {
                item.QuantityInPack = i.Unit;
                item.Price = i.Price;
            }
        });
    }
    return View(itemList);
}

关于asp.net - 如何将我的模型数据(列表)与另一个 View 模型数据(列表)映射 MVC asp.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34287889/

相关文章:

c# - ASP.NET Core MVC MySQL 标识

javascript - json 对象与对象数组

asp.net-mvc - 重定向后获取 ASP.NET MVC 并使用 Restful URL 进行验证

c# - if 语句在数据库 MVC 4 中显示 1 或 2

c# - SQL Server 数据库不会更新来自网站的信息

c# - 使用超链接控件从数据库中检索数据

json - 有人知道如何将 JSON 字符串保存到 DocumentDB 集合中吗?

javascript - 从服务器读取 json 文件作为 JavaScript 中的字符串

javascript - MVC : While retrieving the passed Json object from controller in view, JavaScript 错误

mysql - 为 MySQL 成员提供者用户使用 GUID