Пользовательский элемент управления Представления MVC ASP.NET - как установить идентификаторы?

Вы можете объединить словари в один поиск и затем преобразовать их обратно в словарь.

var result = dictionaries.SelectMany(dict => dict)
                         .ToLookup(pair => pair.Key, pair => pair.Value)
                         .ToDictionary(g => g.Key, g => g.Max());
7
задан MrDustpan 5 November 2008 в 15:34
поделиться

3 ответа

Corey идет к правильному решению. Я думаю, объявляя, что определенные Объекты модели для Вашего представления делают представления ОЧЕНЬ простыми и как премия стороны делает их грязью легкий протестировать.

Таким образом вместо того, чтобы просто передать идентификатор как объект, Вы, вероятно, хотели бы создать свой собственный Объект модели для передачи в.

Это могло выглядеть примерно так:

public class StateDropDownPresentationModel
{
    public string DropDownID { get; set; }
    public string SelectedState { get; set; }
}

Очевидно, продолжайте добавлять независимо от того, что Вы должны к этой модели сделать свое представление корректным.

Затем Вы могли назвать его как это:

<%= Html.RenderPartial("/someDirectory/SomeControl.ascx", new StateDropDownPresentationModel { DropDownID = "MyID", SelectedState = "IL" } %>

Затем просто удостоверьтесь, что Вы вставляете проверки на вещи как идентификатор, являющийся пустым/пустым (который должен, вероятно, бросить ошибку), и SelectedState, являющийся пустым/пустым.

9
ответ дан 6 December 2019 в 19:44
поделиться

Смотрите на HTML. Вспомогательный метод DropDownList. Это имеет много перегрузок, которые позволяют Вам передавать данные списка и устанавливать выбранный пункт. самая простая версия просто определяет имя выбора.

<%= Html.DropDownList("SelectStates"); %>

Если будет значение в ViewData["SelectStates"], который имеет тип MultiSelectList затем, то список будет автоматически заполнен.

1
ответ дан 6 December 2019 в 19:44
поделиться

Хорошо можно передать данные объектов методу RenderPartial в соединении к Пользовательскому элементу управления для рендеринга, таким образом, Вы могли легко сделать следующее:

<%= Html.RenderPartial("/someDirectory/SomeControl.ascx", "MyID") %>

и в UserControl делают следующее:

<select name="<%=ViewData.Model%>" id="<%=ViewData.Model%>">

....

Только, чтобы быть уверенным, лучший способ обработать его состоит в том, чтобы сделать простой DTO (объект передачи данных) для содержания той информации, таким образом, можно передать больше информации пользовательскому элементу управления, в котором Вы будете неизбежно нуждаться.

Пример:


class ComboData 
{
   string ID {get;set;}
   string CssClass {get;set;}
   //Other stuff here
}

<%
var comboData = new ComboData {ID = "myID", CssClass = "comboStyle" }

%>

<%= Html.RenderPartial("/someDirectory/SomeControl.ascx", comboData) %>
<select name="<%=ViewData.Model.ID%>" id="<%=ViewData.Model.ID%>" class="<%=ViewData.Model.CssClass%>">

....

Удостоверьтесь, что Вы устанавливаете Код позади, чтобы пользовательский элемент управления был дженериком типа ComboData для этого примера.

3
ответ дан 6 December 2019 в 19:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: