2012-01-13 3 views
0

У меня есть ddl, который заполнен часами 01-23 дня. Это относится к форме, которая используется для заказа предмета оборудования. Час заполняется в поле db. Проблема заключается в том, что, когда форма бронирования открывается, чтобы изменить время, в течение которого ddl показывает час, который был забронирован, когда он был изменен, и форма отправлена, значение, переданное по почте, является начальным значением из db, а не новым выбранным часом.MVC Значение ddl после обратной передачи

это основные фрагменты кода. любая идея, почему недавно выбранное значение ddl не передается модели?

Посмотреть

<%= Html.DropDownList("ddl_Hour", Model.ddlHour, 
new { @class = "DropDown", style = "width: 40px” })%> 

Модель

private string _ddlHourSelectedValue = "0"; 
public SelectList ddlHour 
     { 
      get 
      { 
       return (new System.Web.Mvc.SelectList(_ddlHour, "intValue", "Text", Convert.ToInt32(_ddlHourSelectedValue))); 
      } 
     } 
public string ddlHourSelectedValue 
     { 
      get 
      { 
       return _ddlHourSelectedValue; 
      } 
      set 
      { 
       _ddlHourSelectedValue = value; 
      } 
     } 



param[6] = new SqlParameter("@Timeslot", ddlHourSelectedValue); 

ответ

1

Поле с вашей точки зрения, называется «ddl_Hour» Однако есть переменная в вашей модели с тем же именем? В противном случае структура MVC не будет автоматически заполнять значение в модели.

Два способа, которыми вы могли бы это сделать.

В своих методах контроллер, который принимает почту, вы можете добавить параметр:

FormCollection fc
к методу. Эта передача ключей пара значений позволит получить результаты из полей в почтовых данных следующим образом:

string selectedValue = fc["ddl_Hour"];

Или вы можете изменить свою модель, чтобы включить переменную с тем же именем, что и выпадающий список, чтобы он автоматически заполнялся для вас.

public string ddl_Hour { get; set; }

Затем вы должны получить доступ к результату выбора выпадающего списка в сообщении из этой переменной.

+0

Извините, моя копия была неправильной. Я внесла поправки. Модель имеет переменную общественного SelectList ddlHour – user1071017

+1

Проблема такова: '<% Html.DropDownList = ("ddl_Hour", Model.ddlHour, новый {@class = "DropDown", стиль =«ширина: 40px "})%>' Отправляет выбранное значение выпадающего списка в приложение с идентификатором «ddl_Hour». Поскольку в вашей модели с тем же именем нет строковой переменной, она не будет автоматически доступна вам. Если вы переименуете переменную 'public string ddlHourSelectedValue' в' ddl_Hour', вы должны найти значение, которое вы выбрали, и сообщение будет заполнено в вашей модели. –

+0

Отлично, теперь работает. Спасибо за вашу помощь – user1071017

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