2017-04-18 5 views
0

Ich bin neu in diesem Bereich. Ich verwende Northwind Datenbank. Die REGION BESCHREIBUNGEN erscheint in der Dropdown-Liste, aber wenn ich versuche, einen neuen Kunden zu erstellen, wird kein neuer Datensatz in der Datenbank gespeichert, da Dropdown-Liste ausgewählten Wert nicht funktioniert. Diese beiden Tabellen sind im Modell nicht mit dem Fremdschlüssel verknüpft. Irgendwelche Hilfe?! Vielen Dank.Dropdownliste ausgewählter Wert nicht in Datenbank gespeichert

this is the view : 


    @model Northwind.Customer 


@{ 
    ViewBag.Title = "Create"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Create</h2> 


@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>Customer</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.CustomerID, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.CustomerID, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.CustomerID, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.CompanyName, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.CompanyName, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.CompanyName, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.ContactName, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 

       @Html.EditorFor(model => model.ContactName, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.ContactName, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.ContactTitle, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.ContactTitle, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.ContactTitle, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.City, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.City, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.City, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Region, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownList("Region", String.Empty) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.PostalCode, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.PostalCode, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.PostalCode, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Country, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Country, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Country, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Phone, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Phone, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Phone, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Fax, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Fax, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Fax, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 

dies ist der Controller:

using System; 
using System.Collections.Generic; 
using System.Globalization; 
using System.Linq; 
using System.Net; 
using System.Web; 
using System.Web.Mvc; 
using Northwind.Models; 
using System.Data.Entity; 
using System.Data.Entity.Validation; 

namespace Northwind.Controllers 
{ 
    public class CustomerController : Controller 
    { 
     dbNorthwindEntities db = new dbNorthwindEntities(); 





     // GET: Customer 
     // public ActionResult Index() 
     // { 
     // return View(db.Customers.ToList().Take(10)); 
     // return View(db.Customers.ToList()); 
     // } 

     public ActionResult Index() 
     { 
      return View(db.Customers.ToList()); 
      // var customers = db.Customers.Include(a => a.Region); 
      // return View(customers.ToList()); 
      // var customers = db.Customers.Include(a => a.Region); 

      // return View(customers.ToList()); 
      // var customers = db.Customers.Include("Region"); 
      //return View(customers.ToList()); 
      // return View(db.Customers.ToList()); 
     } 



     //me marr formen per create 
     [HttpGet] 
     public ActionResult Create() 
     { 

      ViewBag.Region = new SelectList(db.Regions, "RegionDescription", "RegionDescription"); 
      return View(); 
     } 



     //me bo post ne databaze 
     [HttpPost] 
     public ActionResult Create(Customer customer) 
     { 
      if (ModelState.IsValid) 
      { 
       db.Customers.Add(customer); 
       try 
       { 

        db.SaveChanges(); 
       } 

       catch (DbEntityValidationException ex) 
       { 
        foreach (var entityValidationErrors in ex.EntityValidationErrors) 
        { 
         foreach (var validationError in entityValidationErrors.ValidationErrors) 
         { 
          Response.Write("Property: " + validationError.PropertyName + " Error: " + validationError.ErrorMessage); 
         } 
        } 
       } 
       //return RedirectToAction("Index"); 
      } 

      ViewBag.Region = new SelectList(db.Regions, "RegionDescription", "RegionDescription", customer.Region); 
      return View(customer); 
     } 



     //me marr formen me get 

     [HttpGet] 
     public ActionResult Edit(string id) 
     { 
      dbNorthwindEntities db = new dbNorthwindEntities(); 

      if (id == null) 
      { 
       return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 

      } 

      Customer customer = db.Customers.Find(id); 
      if (customer == null) { return HttpNotFound(); } 
      ViewBag.Region = new SelectList(db.Regions, "RegionDescription", "RegionDescription", customer.Region); 
      return View(customer); 
     } 


     //me postu 

     [HttpPost] 
     public ActionResult Edit([Bind(Include = "CustomerID,CompanyName,ContactName,Address,City,Region ,PostalCode, Country , Phone , Fax ")]Customer customer) 
     { 
      if (ModelState.IsValid) 
      { 



       db.Entry(customer).State = EntityState.Modified; 

       db.SaveChanges(); 
       // return RedirectToAction("Index", new {id = selectedc}) 
       return RedirectToAction("Index"); 
      } 
      ViewBag.Region = new SelectList(db.Regions, "RegionDescription", "RegionDescription", customer.Region); 
      return View(customer); 

    } 


    // GET: /Employee/Delete/5 

    public ActionResult Delete(string id) 
     { 
      if (id == null) 
      { 
       return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
      } 
      Customer customer = db.Customers.Find(id); 
      if (customer == null) 
      { 
       return HttpNotFound(); 
      } 
      return View(customer); 
     } 


     /// POST: /Employee/Delete/5 
     [HttpPost] 
     public ActionResult Deletee(string id) 
     { 
      Customer customer = db.Customers.Find(id); 
      db.Customers.Remove(customer); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 






     [HttpGet] 
     public ActionResult Details(string id) 
     { 
      dbNorthwindEntities db = new dbNorthwindEntities(); 
      Customer customer = db.Customers.Single(x => x.CustomerID == id); 
      return View(customer); 
     } 

     protected override void Dispose(bool disposing) 
     { 
      if (disposing) 
      { 
       db.Dispose(); 
      } 
      base.Dispose(disposing); 
     } 

    } 
} 

dies ist der Kunde und Region Klassen:

//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated from a template. 
// 
//  Manual changes to this file may cause unexpected behavior in your application. 
//  Manual changes to this file will be overwritten if the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

namespace Northwind 
{ 
    using System; 
    using System.Collections.Generic; 
    using System.ComponentModel.DataAnnotations; 
    using System.ComponentModel.DataAnnotations.Schema; 

    public partial class Customer 
    { 
     [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
     public Customer() 
     { 
      this.Orders = new HashSet<Order>(); 
      this.CustomerDemographics = new HashSet<CustomerDemographic>(); 
     } 

     public string CustomerID { get; set; } 
     public string CompanyName { get; set; } 
     public string ContactName { get; set; } 
     public string ContactTitle { get; set; } 
     public string Address { get; set; } 
     public string City { get; set; } 

     //  [StringLength(15, MinimumLength = 3, ErrorMessage = "Invalid")] 
     // [MaxLength(15), MinLength(5)] 
     public virtual Region Regions { get; set; } 

     public string Region { get; set; } 
     public string PostalCode { get; set; } 
     public string Country { get; set; } 
     public string Phone { get; set; } 
     public string Fax { get; set; } 

     [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
     public virtual ICollection<Order> Orders { get; set; } 
     [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
     public virtual ICollection<CustomerDemographic> CustomerDemographics { get; set; } 

    // public string Region { get; set; } 
     // [NotMapped] 
    // public List<Region> RegionList { get; set; } 

     //public Region Regionn { get; set; } // Navigation Property 

     //[NotMapped] 
     // public string RegionID { get; set; } 

     // [NotMapped] 
     //  public List<Region> RegionList { get; set; } 

    // public int RegionID { get; set; } 





    } 
} 




//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated from a template. 
// 
//  Manual changes to this file may cause unexpected behavior in your application. 
//  Manual changes to this file will be overwritten if the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

namespace Northwind 
{ 
    using System; 
    using System.Collections.Generic; 
    using System.ComponentModel.DataAnnotations.Schema; 

    public partial class Region 
    { 
     [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
     public Region() 
     { 
      this.Territories = new HashSet<Territory>(); 
     } 

     public int RegionID { get; set; } 
     public string RegionDescription { get; set; } 

     public Nullable<int> SelectId { get; set; } 

     [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
     public virtual ICollection<Territory> Territories { get; set; } 

     // public List<Customer> Customers { get; set; } // Navigation property 


    } 
} 

Antwort

0

Sie sollten wahrscheinlich ein Modell für Ihre Ansicht werden. Sie können Ihren Kunden, die Regionsliste und die SelectedRegionId hinzufügen. Dann verwenden Sie etwas wie folgt: Html.DropDownListFor(model => model.SelectedRegionId, Model.Regions.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() })) Das Problem scheint zu sein, dass Sie keine Variable haben, um die ausgewählte Region (SelectedRegionId in meinem Beispiel) zu speichern.

Verwandte Themen