頭の中ではかなり単純なものを作りたいと思っていますが、作成しようとすると非常に複雑です。MVC ASP.NET 環境で、1 つのモデルを作成して何度もレンダリングしたいと考えています。それは仕事ですが、データを取り戻したいときは何もありません。モデルは次のようになります。
public class HardwareModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
...
}
ラッパーは次のようになります。
public class WrapperModel
{
public List<HardwareModel> HardwareList { get; set; }
public WrapperModel()
{
HardwareList = new List<HardwareModel>();
}
}
コントローラー:
readonly Hardware _hardware = new Hardware();
[Authorize]
public ActionResult Index()
{
return View(_hardware.GetHardwareList(int.Parse(Session["idEmployee"].ToString())));
}
[HttpPost]
[Authorize]
public ActionResult Index(WrapperModel model)
{
return View(model);
}
そしてビュー:
<% using (Html.BeginForm())
{%>
<% foreach (var hardware in Model.HardwareList)
{%>
<tr>
<td>
<div class="editor-label">
<%: Html.LabelFor(m => hardware.SelectedHardwareType) %>
</div>
<div class="editor-field">
<%: Html.DropDownListFor(m => hardware.SelectedHardwareType, hardware.Hardwaretypes) %>
</div>
...
したがって、結果は次のようになります。
レンダリングはまさに私が望むものですが、問題は、保存ボタンを押すと、コントローラーの 2 番目の部分が使用されますが、「WrapperModel モデル」の値は空のリストです。Request 値では、すべてがコントローラーに送信されていることがわかりますが、WrapperModel では一致するものはありません。
「HardwareModel」の数が 0 または 99 になる可能性があるため、HardwareModel1、HardwareModel2 を作成できないため、どうすればよいかわかりません... web で読んだように。
私を助けてくれてありがとう、そして長い投稿でごめんなさい。