List<string>
ループを使用して HTML にa を表示しようとしています。次の出力が得られます。
System.Collections.Generic.List`1[System.String]
これは以前に見たことがありますが、現在コーディングしている方法ではありません。その値を表示するために2つのループを試しましたList<string>
が、どちらも上記の同じ結果を返します:
HTML
@{
Layout = "~/Administration/Views/Shared/_AdminLayout.cshtml";
}
@using Telerik.Web.Mvc.UI
@using Nop.Plugin.Misc.ExportAttributes.Models;
@model ImportCalculationSheetModel
@using Nop.Web.Framework;
@using (Html.BeginForm())
{
<ul>
@for (int i = 0; i < Model.FailedProductIdsList.Count; i++)
{
<li><b>@Convert.ToString(Model.FailedProductIdsList[i])</b></li>
}
</ul>
}
ループの場合:
<ul>
@for (int i = 0; i < Model.FailedProductIdsList.Count; i++)
{
<li><b>@Convert.ToString(Model.FailedProductIdsList[i])</b></li>
}
</ul>
Foreach ループ:
<ul>
@foreach(var productId in Model.FailedProductIdsList)
{
<li><b>@Convert.ToString(productId);</b></li>
}
</ul>
List<string>
デバッグ時に:に値が 1 つしか挿入されてい"99999"
ないことがわかります。そのため、文字列に変換する必要さえありませんが、変換しない場合でも結果は同じであるため、念のために行いました。
私が使用しているモデル: を使用してImportCalculationSheetModel
参照されていますView
@model ImportCalculationSheetModel
モデル
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Nop.Web.Framework;
using Nop.Web.Framework.Mvc;
namespace Nop.Plugin.Misc.ExportAttributes.Models
{
public class ImportCalculationSheetModel : BaseNopModel
{
public List<string> FailedProductIdsList { get; set; }
}
}
したがって、私のモデルには 1 のみList<string>
が入力され、リストは my に入力されますController
。
コントローラ
[HttpGet]
public ActionResult ImportCalculationSheetSucceededWithFailures(ImportCalculationSheetModel model)
{
return View("Nop.Plugin.Misc.ExportAttributes.Views.MiscExportAttributes.ImportCalculationSheetSucceededWithFailures", model);
}
[HttpPost]
public ActionResult ImportCalculationSheet(ImportCalculationSheetModel model)
{
if (ModelState.IsValid)
{
ImportFromCalculationSheet _importFromCalculationSheet = new ImportFromCalculationSheet();
var file = Request.Files["importexcelfile"];
if (file != null && file.ContentLength > 0)
{
_importFromCalculationSheet.ImportProductsFromXlsx(file.InputStream);
model.FailedProductIdsList = _importFromCalculationSheet.FailedToUpdateIds;
}
else
{
return RedirectToAction("ImportCalculationSheet", model);
}
if (model.FailedProductIdsList.Count > 0)
{
return RedirectToAction("ImportCalculationSheetSucceededWithFailures", model);
}
else
{
return RedirectToAction("ImportCalculationSheetSucceeded", model);
}
}
else
{
return RedirectToAction("ImportCalculationSheet", model);
}
}
FailedProductIdsList
次の行で満たされます:
model.FailedProductIdsList = _importFromCalculationSheet.FailedToUpdateIds;
デバッグ時に、そこで失敗しないことがわかります。
質問
for ループと foreach ループが返される理由:
System.Collections.Generic.List`1[System.String]
一度に 1 つのアイテムのみを取得し、List<string>
それを文字列に変換する場合は? ビューでこの問題をより適切にデバッグする方法はありますか?(ビューのブレークポイントはヒットしません)