データベースから値を取り込む必要がある2つのドロップダウンリストがあります。 私はストアドプロシージャとその結果が正しいことを確認しました。私もコントローラまでデバッグして、正しい値を得ているように見えます。データベースからのDropDownListForの値の設定
@ Html.DropDownlistFor構文を理解するのに助けが必要です。私が使っているものは間違っています。どんな助け?
モデル:
public class DropDownConfiguration
{
public string Project { get; set; }
public string LineID { get; set; }
}
コントローラー:
[ActionName("DetailsForm")]
[HttpGet]
public ActionResult DetailsForm()
{
try
{
IEnumerable<DropDownConfiguration> dropConfig = new List<DropDownConfiguration>();
dropConfig = floorService.DropDownList();
DetailsViewModel model = new DetailsViewModel()
{
dropConfig = dropConfig,
};
return View("DetailsForm",model);
}
catch (Exception ex)
{
return View("_error");
}
}
リポジトリ:
public IEnumerable<DropDownConfiguration> DropDownList()
{
var model = new List<DropDownConfiguration>();
using (var dbCmd = defaultDB.GetStoredProcCommand("dbo.GetLineIDProject"))
{
var varCmd = defaultDB.ExecuteReader(dbCmd);
while (varCmd.Read())
{
model.Add(new DropDownConfiguration()
{
LineID = varCmd.IsDBNull(0) ? "" : varCmd.GetString(0),
Project = varCmd.IsDBNull(1) ? "" : varCmd.GetString(1),
Quarter = varCmd.IsDBNull(2) ? 0 : varCmd.GetInt32(2),
Year = varCmd.IsDBNull(3) ? 0 : varCmd.GetInt32(3)
});
}
}
return model;
}
Htmlの(ここでは、プロジェクト、2ドロップダウンリストLineIDです)----- NEEDヘルプここ------
@Html.DropDownListFor(m => m.dropConfig.FirstOrDefault().LineID, "--Select LineID--", new { @class = "form-control" })
@Html.DropDownListFor(m => m.dropConfig.FirstOrDefault().Project, "--Select Project--", new { @class = "form-control" })
@Controllerデバッグの
あなたの意見は理にかなっていません。ドロップダウンリストには2つのプロパティが必要です.1つはバインドし、もう1つは表示するオプションです。モデルにバインドするプロパティがありません。 [this Q/A](https://stackoverflow.com/questions/34366305/the-viewdata-item-that-has-the-key-xxx-is-of-type-system-int32-but)をご覧ください。 -must-be-o)ドロップダウンリストを生成するために –
あなたの 'DropDownListFor'設定が間違っていると思います。選択した値をバインドするために 'FirstOrDefault()'を使う理由は?また、 'IEnumerable'を使用して、データコレクションリストとして2番目の引数にDDLを設定しません。 –
ありがとうございます。これをLemmeでチェックしてください。 – beginner