ASP.NET MVC 2 - HTML.EditorFor () и пользовательский EditorTemplates

Да, это.

можно отключить его на командной строке с переключателем "-u".

, С другой стороны, Вы могли назвать .flush () на sys.stdout на каждой записи (или обернуть его с объектом, который делает это автоматически)

11
задан Nathan Taylor 5 August 2009 в 20:46
поделиться

3 ответа

Вы можете либо создать собственную модель представления, которая имеет оба свойства, ЛИБО вам нужно будет использовать ViewData для передачи этой информации.

13
ответ дан 3 December 2019 в 05:13
поделиться

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

Он используется в представлении как:

<%= Html.DropDownList
            (
            "CategoryCode",
            MvcApplication1.Utility.EditorTemplates.SelectListForEnum(typeof(WebSite.ViewData.Episode.Procedure.Category), selectedItem)
            ) %>

Перечисление для категории украшено атрибутами описания, которые будут использоваться в качестве текстовых значений в элементах выбора:

 public enum Category 
        {
            [Description("Operative")]
            Operative=1,
            [Description("Non Operative")]
            NonOperative=2,
            [Description("Therapeutic")]
            Therapeutic=3 
        }
        private Category _CategoryCode; 
        public Category CategoryCode 
        {
            get { return _CategoryCode; }
            set { _CategoryCode = value; }
        }

SelectListForEnum создает список элементов выбора, используя определение перечисления и индекс для текущего выбранного элемента, как показано ниже:

        public static SelectListItem[] SelectListForEnum(System.Type typeOfEnum, int selectedItem)
    {
        var enumValues = typeOfEnum.GetEnumValues();
        var enumNames = typeOfEnum.GetEnumNames();
        var count = enumNames.Length;
        var enumDescriptions = new string[count];
        int i = 0;
        foreach (var item in enumValues) 
        {
            var name = enumNames[i].Trim();
            var fieldInfo = item.GetType().GetField(name);
            var attributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
            enumDescriptions[i] = (attributes.Length > 0) ? attributes[0].Description : name;
            i++;
        }
        var list = new SelectListItem[count];
        for (int index = 0; index < list.Length; index++)
        {
            list[index] = new SelectListItem { Value = enumNames[index], Text = enumDescriptions[index], Selected = (index == (selectedItem - 1)) };
        }
        return list;
    }

Конечным результатом является красиво представленный DDL.

Надеюсь это поможет. Будем очень благодарны за любые комментарии о лучших способах сделать это.

5
ответ дан 3 December 2019 в 05:13
поделиться

Попробуйте использовать ViewData. ModelMetadata содержит все аннотации вашего класса.

Отличная статья http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html

4
ответ дан 3 December 2019 в 05:13
поделиться
Другие вопросы по тегам:

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