"Bankalar" ile doğrudan ilişkisi olan bir modele postalanan bilgileri eklemeye çalıştığımda, mükemmel bir şekilde çalışır. Otomatik uygulamaya CRUD işlemleriModel görünümünde yer almayan Dropdownlist modelinden postalanan kimliği alma
ile çalışıyor direkt model içinKod parçacıkları
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; }
}
Denetleyici:
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);
}
Ama yüz sorun ben bunu uygulamak çalıştığınızda olmasıdır:
Bu modelViewBu yalnızca açılan listeden banka bilgilerini gösterir. Bilgiler "Gönder" butonu ile gönderildiğinde, bankid'in null olamayacağı konusunda bana bir hata verir. El ile tüm açılan liste öğeleri 1 (ex: _OrganizationUserSignedBy.Organization.BankID = 1;) olacağını, el ile eklediyseniz, test ettim. Sorun şu ki, ModelView'de yayınlanan bilgiler doğru şekilde alınmadı.
Modelview kod parçalarını:
Kontrolör
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);
}
oluştur Görünüm:
@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)
şimdi bir hafta boyunca bu çıkış yolu ararken Been ve çözüm bulamıyorum .. Herhangi bir yardım takdir edilecektir ve şimdi ya da gelecek için herhangi bir ipucu varsa çok takdir ediyorum. Teşekkür ederim!
Not: Bazı kodlar kesildi, bu nedenle sorunun nerede yarayacağını anlamak için çok uzun sürmeyecek.