в ASp.NET MVC, как вы помните состояние выпадающего списка? - PullRequest
2 голосов
/ 26 мая 2009

У меня есть это действие:

public ActionResult Add([Bind(Include = "Title,Description")] product product2Add){
--SNIP--
}

Я использую шаблон модели представления, где я создал специальный класс AddProduct_ViewModel, который содержит мой класс продукта и все остальное, что мне нужно в моем представлении. Это включает 2 выпадающих списка; один, который выполняет поиск в БД по всем категориям продуктов, а другой - списки поставщиков продуктов.

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

Ответы [ 2 ]

1 голос
/ 26 мая 2009

в контроллере можно звонить:

Request.Form.Get("MyDropDownListId");

Чтобы получить атрибут значения выбранного параметра.

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

Пример установки выбранного элемента в представлении, если у вас есть свойство «PageSize» в вашей модели:

Response.Write(Html.DropDownList("pageSize",
            Model.PageSizes.ToSelectList(p => p.ToString(), p => p.ToString(), p => p.Equals(Model.PageSize))));

С методом расширения ToSelectList ():

public static List<SelectListItem> ToSelectList<T>(this IEnumerable<T> enumerable, Func<T, string> text, Func<T, string> value, Func<T, bool> selected)
{
    var items = enumerable.Select(f => new SelectListItem() { Text = text(f), Value = value(f) }).ToList();
    return items;
}
0 голосов
/ 26 мая 2009

Хорошо ... в MVC нет состояния просмотра, поэтому элементы управления не могут сохранить состояние, хотя вы можете использовать некоторые приемы с сохранением его в cookie с использованием javascript - предпочтительно jquery, или сохранение этой информации на стороне сервера в событии onChange .

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