Pek çok ilişkide okumak ve yazmak çok zor değil, ancak başlangıçta doğru bir şekilde almak zor değildir. Modellerinize hiçbir şey eklemek zorunda değilsiniz, haklılar.
Yazma
Ben bir açılan liste ile bir çalışan için tek bir sipariş eklemek için nasıl bir örnekle göstereceğiz. Çalışanlara birden fazla sipariş ekleme konsepti neredeyse aynıdır, bir öğretici ile altta bir bağlantı bulacaksınız. Her şeyden
Önce görünüm modellerini böyle oluşturmalısınız: senin EmployeesControler yılında Sonra
public class CreateEmployeeViewModel
{
public int ID { get; set; }
public string Name { get; set; }
public int EmployeeNumber { get; set; }
public int SelectedOrderID { get; set; }
public SelectList OrdersList { get; set; }
}
: İlk parametre nesnelerin listesi olacak
hangi Bir şey seçmek istiyorum (bu durumda bir Sipariş). İkinci parametre, görünüm modeline (SelectOrderID olarak) geçmek istediğiniz Siparişinizin uygunluğunun adıdır ve son olarak üçüncü parametre, açılır menüde görüntülemek istediğiniz değerdir.
Ve Create.cshtml yılında
bu ilk satırı değiştirin: Artık
<div class="form-group">
@Html.LabelFor(model => model.OrdersList, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.SelectedOrderID, Model.OrdersList, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.SelectedOrderID, "", new { @class = "text-danger" })
</div>
</div>
sahip olmalıdır:
@model TestStackOverflow.Models.CreateEmployeeViewModel
Sonraki Html.BeginForm açılır listeyi eklemek Oluştur görünümünde this.
Sonra EmployeesControler geri dönün ve oluşturmak için SONRASI yöntemi bulmak ve bu ile değiştirin:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(CreateEmployeeViewModel model)
{
if (ModelState.IsValid)
{
Employee employee = new Employee()
{
Name = model.Name,
ID = model.ID,
EmployeeNumber = model.EmployeeNumber,
Orders = new List<Order>()
};
employee.Orders.Add(db.Orders.Where(x => x.ID == model.SelectedOrderID).FirstOrDefault());
db.Employees.Add(employee);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}
Bu görünüm modeli değerlerine dayalı yeni Çalışan yaratacak ve bir sipariş eklemek Bu Çalışana. Şimdi, OrderEmployees tablonuzu kontrol ederseniz, bir Çalışan eklediğinizde yeni bir girişin oluşturulduğunu görmelisiniz.değerlerinin okunması
Okuma
yazmaktan daha çok basittir. Bir sipariş işleme tüm çalışanları okumak istiyorsanız, sadece bu gibi yapmak
dosyanızın üstündeki bu ekleyin (bunu göstermek için Siparişlerim'den Index.cshtmlaldı):
Ve şimdi dosyayı biraz daha değiştirin. Bu gibi görünmelidir:
görünümlerinizde birçok ilişkilere pek ilişkilere birini ve pek işlemek için SelectList nasıl kullanılacağı hakkında bir eğitici bulabilirsiniz Here
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.ManufacturerID)
</td>
<td>
@foreach (Employee e in item.Employees)
{
@e.Name <br />
}
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}.
Bu cevabın size yardımcı olacağını umuyorum.
Cevabınız için teşekkürler! Henüz test etmek için zamanım olmadı, ama olması gerektiği gibi görünüyor. –