У меня есть простая форма. Он содержит несколько текстовых полей и один раскрывающийся список. И я не могу получить выбранный идентификатор элемента, чтобы сохранить его в базе данных.Не могу получить выбранный номер 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
Да, OrderId является первичным ключом таблицы order_data. Проблема в том, что я не могу добавить данные в таблицу, потому что основной ключ не установлен – lukaszb
вы используете подход DB-first или Code First? Если ошибка говорит о том, что ORDA_ID не установлен, и вы используете БД сначала (использование частичного класса указывает на такую вещь), то я бы сказал, что вам не хватает параметра Identity, установленного на вашем PK – torm
. У меня нет ошибки. Когда я создаю базу данных, в этом столбце была установлена личность. Когда я debbug его ORD_Id = 0, всегда ... и мой ModelState недействителен. Но я думаю, что это связано с полем государства. – lukaszb