MVCで初めて作業していますが、CSVファイルの値をドロップダウンリストに入力するのに少し問題があります。 csvファイルは2つの列です。最初はロケーション名、2番目はisOpenだけが1と0です。MVCを使用したCSVファイルへのドロップダウンの実装
これが私の見解で私の最初の試みだった。今のよう
<div class="col-md-10">
@{
List<SelectListItem> locations = new List<SelectListItem>();
if (System.IO.File.Exists("~/Data/locations.csv"))
{
string[] lines = System.IO.File.ReadAllLines("~/Data/locations.csv");
foreach (string line in lines)
{
string[] data = line.Split(',');
if (data[1] == "1")
{
locations.Add(new SelectListItem { Text = data[0], Value = data[0] });
}
}
}
Html.DropDownListFor(m => m.location, locations, new { htmlAttributes = new { @class = "form-control" } });
Html.ValidationMessageFor(model => model.location, "", new { @class = "text-danger" });
}
</div>
、コードのどれもFile.Existsは、IIS Expressのフォルダに自動的にデフォルトは機能しているため実行しないとfalseを返します。私は調査したときに簡単な答えを見つけることができませんでしたが、プロジェクトフォルダに適切に向ける方法がありますか?または、私のコントローラーにこのコードを書いた方が良いでしょうか?
System.IOは '〜/'構文を理解していません。 System.IOに渡す前にファイルパスを前処理する必要があります。さらに、この種のロジックはビューに属しません。代わりに、データソースからデータを読み取るクラスを作成する必要があります。コントローラは、そのクラスを使用して必要なデータを取得し、そのデータをビューモデルに追加してから、ビューモデルからその情報を表示する必要があります。最後に、手動でCSVファイルを解析しないでください。それは災害のレシピです。 CsvHelperのような、あなたのニュアンスを扱うライブラリを使用してください。 – mason