如何使用c#在html(razor)中实现for循环



大家好,我正试图创建一个表与所有的信息,我已经从一个api .cshtml.cs,并在html页面中显示它们。但我不太明白。这是来自.cshtml.cs

的代码
public async Task<IActionResult> OnGetAsync()
{
var client = new RestClient("https://example.com/xxx/api/v1/xxx");
var request = new RestRequest();
request.AddHeader("AuthenticationToken", "xxx");
request.AddHeader("Cookie", "_sid_=xx");
request.AddHeader("Content-Type", "application/json");
RestResponse response = await client.GetAsync(request);
JObject obj = JObject.Parse(response.Content);
var resultArray = obj["result"].Values<JObject>();

foreach (var item in resultArray)
{
get_article_id =item["articleId"].Value<int>();
get_article_number =item["articleNumber"].Value<string>();

get_quantity =item["quantity"].Value<int>();
if(item["reservations"].Count() == 0)
{
get_reserved_quantity = 0;
}
else
{
get_reserved_quantity = item["reservations"][0]["reservedQuantity"].Value<int>();       
}
get_name_item = await get_name_of_item(get_article_id);
}
return Page();
}
public int get_article_id { get; set; }
public string get_article_number { get; set; }
public int get_quantity { get; set; }
public int get_reserved_quantity { get; set; }
public string get_name_item { get; set; }

.cshtml的代码为:

<p>
@Model.get_article_id
@Model.get_article_number
@Model.get_quantity
@Model.get_reserved_quantity
@Model.get_name_item
</p>
感谢您的宝贵时间!

我们可以尝试使用创建一个类ViewModel来携带你的数据从API在c#

public class ViewModel{
public int get_article_id { get; set; }
public string get_article_number { get; set; }
public int get_quantity { get; set; }
public int get_reserved_quantity { get; set; }
public string get_name_item { get; set; }
}

然后在c#中编写一个属性ViewModelList,我们可以使用lambda来携带其中的数据。

public List<ViewModel> ViewModelList { get; set; }
public async Task<IActionResult> OnGetAsync()
{
var client = new RestClient("https://example.com/xxx/api/v1/xxx");
var request = new RestRequest();
request.AddHeader("AuthenticationToken", "xxx");
request.AddHeader("Cookie", "_sid_=xx");
request.AddHeader("Content-Type", "application/json");
RestResponse response = await client.GetAsync(request);
JObject obj = JObject.Parse(response.Content);
var resultArray = obj["result"].Values<JObject>();
ViewModelList = resultArray.Select(item => new ViewModel()
{
get_article_id = item["articleId"].Value<int>(),
get_article_number = item["articleNumber"].Value<string>(),
get_quantity = item["quantity"].Value<int>(),
get_reserved_quantity = item["reservations"].Any() ? item["reservations"][0]["reservedQuantity"].Value<int>() : 0
}).ToList();
return Page();
}

最后我们可以使用razor页面中的@foreach来迭代ViewModelList

@foreach (var item in Model.ViewModelList)
{
<p>
@item.get_article_id
@item.get_article_number
@item.get_quantity
@item.get_reserved_quantity
@item.get_name_item
</p>

}

最新更新