Выпадающий список MVC - PullRequest
       9

Выпадающий список MVC

0 голосов
/ 11 января 2010

У меня есть выпадающий список:

<%=Html.DropDownList("memberInvoiceStatus", ViewData["memberInvoiceStatus"] as SelectList)%>

Могу ли я установить значение по умолчанию в представлении?

Я так привязан ...

IEnumerable<PayStatus> memberInvoiceStatus = new List<PayStatus>(dr.GetPayStatus());
ViewData["memberInvoiceStatus"] = new SelectList(memberInvoiceStatus, "payStatusId", "payStatusText");

Итак, у меня есть коллекция memberInvoiceStatus (всего 4), но мне нужно выбранное значение каждого

Ответы [ 3 ]

3 голосов
/ 11 января 2010

Попробуйте это :

<%=Html.DropDownList("memberInvoiceStatus", ViewData["memberInvoiceStatus"] as SelectList, "--DEFAULT TEXT--")%>
0 голосов
/ 12 января 2010

Чтобы решить эту проблему, нужно создать список.

Скажите, что ваш статус Pay примерно такой:

public class PayStatus
{
   int id;
   string StatusName;
}

так что вы бы сделали что-то вроде этого:

IEnumerable<PayStatus> memberInvoiceStatus = new List<PayStatus>(dr.GetPayStatus());

 var statusList = new List<SelectListItem>();

foreach(var status in memberInvoiceStatus)
{
    statusList .Add( new SelectListItem()
    {
       Text = status.StatusName,
       Value = status.id
       Selected = status.StatusName == "MyDefaultStatus" // or some logic that will mark as True the item that you want to be the default selected one.   
    }
}

Полагаю, вы можете использовать его так же, как и его, но вместо вставки этого:

ViewData["memberInvoiceStatus"] = new SelectList(memberInvoiceStatus, "payStatusId", "payStatusText");

Вы должны пройти:

ViewData["memberInvoiceStatus"] = new SelectList(statusList , "payStatusId", "payStatusText");

хотя я думаю, что было бы проще, если бы вы только добавили список SelectListItem в данные представления

ViewData["ListOfStatus"] = statusList;

и в представлении вы делаете что-то вроде этого:

<%= Html.DropDownList("Status",ViewData["ListOfStatus"]) %>

, который создаст список с элементом, который вы пометили как выбранный (Selected = true), как элемент по умолчанию (выбранный).

0 голосов
/ 11 января 2010

Я предполагаю, что вы хотите, чтобы значение отражало текущее значение модели. Если нет, вы можете использовать версию помощника, которая позволяет вам указать по умолчанию «невыбранный» параметр для списка. Если это так, вы, вероятно, захотите иметь два разных атрибута в вашей модели или в представлении данных - для этого я почти всегда использую строго типизированную модель представления - один для свойства и один для списка вариантов. Помощник выберет значение по умолчанию для списка выбора из значения свойства, если оно доступно.

Ex:

<%= Html.DropDownList( "memberInvoiceStatus", ViewData["memberInvoiceOptions"] as SelectList ) %>

, где memberInvoiceStatus - свойство (возвращаемое в записи и содержащее значение по умолчанию при просмотре), а memberInvoiceOptions - список выбора. Используя режим (как я бы сказал) это выглядело бы так:

 public class InvoiceViewModel
 {
      public int MemberInvoiceStatus { get; set; }
      public IEnumerable<SelectListItem> MemberInvoiceOptions { get; set; }
      ...
 }


 <%= Html.DropDownList( "MemberInvoiceStatus", Model.MemberInvoiceOptions ) %>

Использование строго типизированных расширений HtmlHelper, вероятно, даже лучше, но требует использования сборки MvcFutures или ожидания MVC 2.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...