2012-01-11 6 views
0

У меня есть простая форма. Он содержит несколько текстовых полей и один раскрывающийся список. И я не могу получить выбранный идентификатор элемента, чтобы сохранить его в базе данных.Не могу получить выбранный номер id

Это метод управления ведьма displaing формы

public ActionResult DisplayForm() 
     { 
      ViewBag.State = new SelectList(conn.state, "STATE_Id", "STATE_Name"); 
      return View(new order_data()); 
     } 

это метод ведьма должен сохранять данные в базу данных

[HttpPost] 
     public ActionResult MakeOrder(order_data data, state stateId) 
     { 
      if (ModelState.IsValid) 
      { 
       conn.order_data.Add(data); 
       conn.SaveChanges(); 
       RedirectToAction("Index", "Home"); 
      } 
      return View(); 
     } 

Это мой взгляд

@model bookstore.order_data 

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

<h2>DisplayForm</h2> 

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using (Html.BeginForm("MakeOrder","Order")) 
{ 
    @Html.ValidationSummary(true) 
    <fieldset> 

    <div class="editor-label"> 
      @Html.LabelFor(model => model.ORDA_Name) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ORDA_Name) 
      @Html.ValidationMessageFor(model => model.ORDA_Name) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.ORDA_LastName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ORDA_LastName) 
      @Html.ValidationMessageFor(model => model.ORDA_LastName) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.ORDA_Email) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ORDA_Email) 
      @Html.ValidationMessageFor(model => model.ORDA_Email) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.ORDA_Phone) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ORDA_Phone) 
      @Html.ValidationMessageFor(model => model.ORDA_Phone) 
     </div> 


     <div class="editor-label"> 
      @Html.LabelFor(model => model.ORDA_CityName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ORDA_CityName) 
      @Html.ValidationMessageFor(model => model.ORDA_CityName) 
     </div> 


     <div class="editor-label"> 
      @Html.LabelFor(model => model.state) 
     </div> 
     @Html.DropDownList("State", "--wybierz województwo--") 



     <div class="editor-label"> 
      @Html.LabelFor(model => model.ORDA_StreetName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ORDA_StreetName) 
      @Html.ValidationMessageFor(model => model.ORDA_StreetName) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.ORDA_StreetNr) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ORDA_StreetNr) 
      @Html.ValidationMessageFor(model => model.ORDA_StreetNr) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.ORDA_HomeNr) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ORDA_HomeNr) 
      @Html.ValidationMessageFor(model => model.ORDA_HomeNr) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.ORDA_ZIP) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ORDA_ZIP) 
      @Html.ValidationMessageFor(model => model.ORDA_ZIP) 
     </div> 
     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 
} 

и это модель whitch содержит данные клиента

namespace bookstore 
{ 
    public partial class order_data 
    { 
     public order_data() 
     { 
      this.orders = new HashSet<orders>(); 
     } 
     [Key] 
     public int ORDA_ID { get; set; } 
     [ForeignKey("state")] 
     public Nullable<int> State_STATE_Id { get; set; } 
     [Required] 
     [DisplayName("Miasto")] 

     public string ORDA_CityName { get; set; } 
     [Required] 
     [DisplayName("Ulica")] 
     public string ORDA_StreetName { get; set; } 
     [Required] 
     [DisplayName("Numer ulicy")] 
     public string ORDA_StreetNr { get; set; } 
     [Required] 
     [DisplayName("Numer domu")] 
     public string ORDA_HomeNr { get; set; } 
     [Required] 
     [DisplayName("Kod pocztowy")] 
     public string ORDA_ZIP { get; set; } 
     [Required] 
     [DisplayName("Email")] 
     public string ORDA_Email { get; set; } 
     [Required] 
     [DisplayName("Imię")] 
     public string ORDA_Name { get; set; } 
     [Required] 
     [DisplayName("Nazwisko")] 
     public string ORDA_LastName { get; set; } 
     [Required] 
     [DisplayName("Telefon")] 
     public string ORDA_Phone { get; set; } 
     [Required] 
     [DisplayName("Województwo")] 
     public virtual state state { get; set; } 
     public virtual ICollection<orders> orders { get; set; } 
    } 

} 

и это модель, которая содержит выпадающий список ДАННЫЕ

public partial class state 
    { 
     public state() 
     { 
      this.order_data = new HashSet<order_data>(); 
     } 

     public int STATE_Id { get; set; } 
     public string STATE_Name { get; set; } 

     public virtual ICollection<order_data> order_data { get; set; } 
    } 

Кстати, мне нужно передать OrderID в контроллер тоже, и я не знаю, как, becouse идентификатор всегда равен 0

Пожалуйста , help

ответ

1

Не заказал (ORDA_ID) KEY в вашей таблице order_data? Поэтому он назначается, когда вы вставляете строку в таблицу. Таким образом, либо я не полностью понимаю ваш вопрос, либо вы не пытаетесь выполнить заказ в контроллере.

после выполнения

conn.order_data.Add(data); 
conn.SaveChanges(); 

вы сможете получить ORDA_ID по:

int orderId = data.ORDA_ID; 

, если это то, что вам нужно

+0

Да, OrderId является первичным ключом таблицы order_data. Проблема в том, что я не могу добавить данные в таблицу, потому что основной ключ не установлен – lukaszb

+0

вы используете подход DB-first или Code First? Если ошибка говорит о том, что ORDA_ID не установлен, и вы используете БД сначала (использование частичного класса указывает на такую ​​вещь), то я бы сказал, что вам не хватает параметра Identity, установленного на вашем PK – torm

+0

. У меня нет ошибки. Когда я создаю базу данных, в этом столбце была установлена ​​личность. Когда я debbug его ORD_Id = 0, всегда ... и мой ModelState недействителен. Но я думаю, что это связано с полем государства. – lukaszb

Смежные вопросы