Редактирование не работает с атрибутами Html.DropDownList и @class - PullRequest
4 голосов
/ 11 ноября 2011

Контроллер:

ViewBag.Category = new SelectList(this.service.GetAllCategories(), product.Category);

Я не использую Id + Name.GetAllCategories () возвращает только несколько целых чисел.

Когда я использую в представлении:

@Html.DropDownList("Category", String.Empty)

все работает.Правка в порядке, а DropDownList показывает выбранное значение.Результат HTML:

<select id="Category" name="Category">
<option value=""></option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option selected="selected">5</option>
...
</select>

Но мне нужно использовать css @class, поэтому я использую этот код:

@Html.DropDownList("Category", (IEnumerable<SelectListItem>)ViewBag.Category, new { @class = "anything" })

Результат HTML:

<select class="anything" id="Category" name="Category">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
...
</select>

К сожалению, изменитьвсе еще работает (я могу сохранить выбранное мной значение), но DropDownList начинает показывать значение по умолчанию, а не значение, сохраненное в базе данных .

Есть ли у вас какие-либо идеи, в чем будет проблема?

Обновление Я сделал обновление, чтобы быть более точным.

Метод GetAllCategories выглядит следующим образом:

public List<int> GetAllCategories()
        {
            List<int> categories = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

            return categories;
        }

Ответы [ 3 ]

6 голосов
/ 12 ноября 2011

Html.DropDownList работает довольно интересно:
Если вы не предоставите список выбора

@Html.DropDownList("Category", String.Empty)

будет искать значения для выбора из ViewData/ViewBag на основе предоставленного имени свойства: Category.
Но если вы предоставите список выбора, он будет искать выбранный по умолчанию элемент в ViewData/ViewBag на основе предоставленного имени свойства Category, которое, конечно, будет содержать список вместо значения по умолчанию. Чтобы это исправить, у вас есть два варианта:

Не предоставлять список выбора:

@Html.DropDownList("Category", null, new { @class = "anything" })

Или
Используйте другое имя вместо ViewBag имени свойства Category:

@Html.DropDownList("CategoryDD", (IEnumerable<SelectListItem>)ViewBag.Category, new { @class = "anything" })

0 голосов
/ 11 ноября 2011

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

@Html.DropDownListFor(model => model.savedID,
   (IEnumerable<SelectListItem>)ViewBag.Category, new { @class = "anything" })
0 голосов
/ 11 ноября 2011
 SelectList typelist = new SelectList(this.service.GetAllCategories(), "ProductID", "ProductName", product.Category);
ViewBag.Category=typelist;

Я думаю, что из вашей таблицы вы должны указать значения по умолчанию "ProductID" и текст "ProductName" или значение, которое вы используете и хотите отобразить, чтобы можно было создать список для этих результатов.

Не уверен, что именно ваша проблема, но вы можете попробовать это, возможно, это решит ее.

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