【问题标题】:How do I get my model into my view using C#?如何使用 C# 让我的模型进入我的视图?
【发布时间】:2023-04-03 18:53:01
【问题描述】:

我已将我的 JSON 响应反序列化为一个对象。什么是下一个步骤?我有一个 WebAPI 控制器,我目前正在使用我的 JSON 对象。我需要获取这些数据并将其移动到视图中,以便将其连接到我的 Web 组件。

我想我是否应该在控制器或视图中迭代我的 JSON 对象?我有以下内容:

var model = JsonConvert.DeserializeObject<MyData.RootObject>(Data);
foreach (var record in Data.rows)
{
    foreach (var nestedRecord in record.f)
    {
         List<string> list = new List<string>();
         list.Add(nestedRecord.v);         
    }
}
return View();

另外,我正在迭代这个模型,我无法在视图中返回模型,因为它超出了范围。

【问题讨论】:

  • 您的nestedRecord.v 字符串列表是您想要的视图模型吗?
  • 对于初学者,将模型添加到您的视图中。返回视图(视图模型);

标签: c# json asp.net-mvc razor


【解决方案1】:

我在这里看到两个流行的选项,具体取决于您可能从反序列化对象访问的信息量。一,使用MyData.RootObject 作为你的模型,并在视图中对其进行迭代。如果您需要访问对象的其他属性,这将为您提供最大的灵活性:

var model = JsonConvert.DeserializeObject<MyData.RootObject>(Data);
return View(model);

在视图中(这个无序列表标记只是一个示例),您可能有:

@model MyData.RootObject

<ul>
@foreach (var record in Model.rows)
{
    foreach (var nestedRecord in record.f)
    {
        <li>@nestedRecord.v</li>
    }
}
</ul>

或者,按照您的计划继续,但将您正在填充的列表移到 for 循环之外,使用列表作为模型。就在视图中呈现对象而言,这将是最不灵活的:

var rootObject = JsonConvert.DeserializeObject<MyData.RootObject>(Data);
List<string> list = new List<string>();
foreach (var record in rootObject.rows)
{
    foreach (var nestedRecord in record.f)
    {
        list.Add(nestedRecord.v);         
    }
}
return View(list);

在这种情况下你的观点(比其他选项更简洁):

@model System.Collections.Generic.List<string>

<ul>
@foreach (var record in Model)
{
    <li>@record</li>
}
</ul>

【讨论】:

  • 你美丽的呜咽。这正是我想要的!谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-04-26
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
  • 2016-06-16
  • 2017-07-05
  • 1970-01-01
相关资源
最近更新 更多