ここに私のビューモデルがあります:
public class AgencyViewModel
{
public int VendorId { get; set; }
public IEnumerable<Vendor> Vendors { get; set; }
public HttpPostedFileBase SpreadsheetFile { get; set; }
}
これが私の2つのコントローラーメソッドです。
public ActionResult Upload()
{
var viewModel = new AgencyViewModel
{
Vendors = _vendorsRepository.Vendors.OrderBy(v => v.Name)
};
return View(viewModel);
}
[HttpPost]
public ActionResult Upload(AgencyViewModel viewModel)
{
// do stuff
}
そして私の見解:
@model MyModels.AgencyViewModel
@using (Html.BeginForm("Upload", "Agencies", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
@Html.DropDownListFor(model => model.VendorId,
new SelectList(Model.Vendors, "VendorID", "Name"),
"- Select a Vendor -")
@Html.TextBoxFor(model => model.SpreadsheetFile, new { type = "file" })
<p>
<input type="submit" value="Next" />
</p>
}
に移動するUpload
と、Vendors
が正しくロードされます。しかし、フォームを送信すると、ビュー モデルにはVendorId
andSpreadsheetFile
とVendors
isのみが含まれますnull
。
フォームを送信した後にコレクションを処理する必要がありVendors
、すべてのデータを 2 回ロードしたくありません。
ビューモデルにデータを保持するにはどうすればよいですか?