如何使用C#将模型带入视图?

我已经将JSON响应反序列化为一个对象.什么是下一个步骤?我有一个正在使用JSON对象的WebAPI控制器.我需要获取这些数据并将其移到视图中,以便可以将其连接到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();

另外,我正在遍历此模型,由于它不在范围内,因此无法在视图中返回该模型.

解决方法:

我在这里看到两个流行的选项,具体取决于您可能从反序列化对象中访问多少信息.一种,使用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>
上一篇:Blazor Webassembly本地化的实现


下一篇:Razor语法学习详细记录