2015-12-24 3 views
1

По какой-то причине это неправильно отображается.Razor Rendering issue

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

Типовых

private void InitLogsToRetrieveOptions() 
    { 
     // TODO change this to retreive by DATE/TIME 

     string logsToRetrieveConfig = ConfigurationManager.AppSettings[LogConstants.LogsToRetrieveConfig]; 
     var logsToRetrieveOptions = new List<string>(logsToRetrieveConfig.Split(',')); 
     var logsToRetrieveOptionList = new List<DropdownItem>(); 

     for (int i = 0; i < logsToRetrieveOptions.Count; i++) 
     { 
      logsToRetrieveOptionList.Add(new DropdownItem("Top " + logsToRetrieveOptions[i], logsToRetrieveOptions[i])); 

     } 

     LogsToRetrieveOptions = new SelectList(logsToRetrieveOptionList, LogConstants.DropdownItemValue); 


    } 

WebConfig имеет

<...> 
<add key="LogsToRetrieve" value="10,20,30,50" /> 
</appSettings> 

и Индекс

@Html.LabelFor(model => model.SelectedLogsToRetrieve, new { id = "LogsToRetrieveLabel" }) 
    @Html.DropDownListFor(model => model.SelectedLogsToRetrieve, Model.LogsToRetrieveOptions) 

Для меня это кажется твердым на самом деле моя страница выглядит как этот enter image description here

кроме SO мой вопрос, почему это не работает, и я делаю это applicaiton меньше M $ часто Razor и более AngularJs (я должен справиться с этим лучше в Angular.Js), а не работать над этим. Тем не менее, я также хотел бы знать, почему это не работает (обязательное программирование программиста должно знать, почему.)

Редактировать: модель кажется правильно построенной. Я установил точки останова.

+0

Вы проверили, какие значения находятся в 'model.SelectedLogsToRetrieve'? Это то, что отображается. У меня такое чувство, что вы не совсем понимаете, как работает Razor. попробуйте '@ Html.DropDownListFor (model => model.LogsToRetrieveOptions)', таким образом он фактически отображает 'LogsToRetrieveOptions' –

ответ

0

Я вижу это сейчас модель была ошибочной должна быть

LogsToRetrieveOptions = new SelectList(logsToRetriveeOptionList, LogConstants.DropdownItemValue, LogConstants.DropdownItemDisplayName); 

Поэтому DISPLAYNAME отсутствует.

0

Я не знаю, как выглядит ваш класс DropdownItem, но вы должны быть в состоянии сделать это с использованием класса SelectListItem, который предназначен для рендеринга выпадающих элементов.

string logsToRetrieveConfig = "10,20,30,50"; 
var logsToRetrieveOptions = new List<string>(logsToRetrieveConfig.Split(',')); 
var options = logsToRetrieveOptions 
        .Select(x => new SelectListItem { Value = x, Text = x }).ToList(); 
LogsToRetrieveOptions = new SelectList(options);