投稿された情報を「銀行」と直接関係のあるモデルに挿入しようとすると、正常に動作します。モデルビューに含まれていないDropdownlistモデルからの投稿IDの取得
public ActionResult Create()
{
ViewBag.BankID = new SelectList(db.Banks, "ID", "Title");
....
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Organization organization)
{
if (ModelState.IsValid)
{
organization.OrganizationStatusID = 1;
db.Organizations.Add(organization);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.BankID = new SelectList(db.Banks, "ID", "Title", organization.BankID);
....
return View(organization);
}
しかし、私が直面している問題は、私はそれを実装しようとすることです::自動実装CRUD操作
public class Organization
{
public int ID { get; set; }
....
[Display(Name = "Bank:")]
public int BankID { get; set; }
public virtual Bank Bank { get; set; }
....
}
public class Bank
{
public int ID { get; set; }
[Display(Name = "Bank")]
public string Title { get; set; }
}
コントローラと正常に動作し、直接モデルの
コードスニペット
public class _OrganizationUserSignedBy
{
public int ID { get; set; }
public Organization Organization { get; set; }
....
}
このModelViewでは、銀行情報はドロップダウンリストにのみ表示されます情報が「送信」ボタンを介してポストされると、bankIDがnullではないというエラーが表示されます。手動で挿入すると、選択したすべてのドロップダウンリスト項目が1(例:_OrganizationUserSignedBy.Organization.BankID = 1;)になり、うまくいきました。問題は、投稿された情報がModelViewで正しく受信されないということです。
モデルビューのコードスニペットは:
コントローラ
public ActionResult Create()
{
ViewBag.BankID = new SelectList(db.Banks, "ID", "Title");
....
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(_OrganizationUserSignedBy _OrganizationUserSignedBy)
{
if (ModelState.IsValid)
{
_OrganizationUserSignedBy.Organization.OrganizationStatusID = 1;
db.Organizations.Add(_OrganizationUserSignedBy.Organization);
_OrganizationUserSignedBy.Organization.BankID = 1;
....
db.SaveChanges();
_OrganizationUserSignedBy.User.OrganizationID = db.Organizations.Max(x => x.ID);
_OrganizationUserSignedBy.SignedBy.OrganizationID = db.Organizations.Max(x => x.ID);
db.Users.Add(_OrganizationUserSignedBy.User);
db.SignedBys.Add(_OrganizationUserSignedBy.SignedBy);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.BankID = new SelectList(db.Banks, "ID", "Title", _OrganizationUserSignedBy.Organization.BankID);
....
return View(_OrganizationUserSignedBy);
}
ビューを作成します。
@model MVC_CPO_REGRELEASE.Models._OrganizationUserSignedBy
....
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
....
@Html.LabelFor(model => model.Organization.BankID, "*Banko pavadinimas:")
@Html.DropDownList("BankID", null, "Pasirinkite...")
@Html.ValidationMessageFor(model => model.Organization.BankID)
が今一週間のためにこれを行う方法を探して、私は解決策を見つけるcan`t ..助けていただければ幸いです。もしあなたが今や将来のためのヒントを持っていれば、私はとても感謝しています。ありがとうございました!
PS:一部のコードが削除されているため、問題がどこにあるのか理解が間に合わないでしょう。