2016-09-09 3 views
0

Я пытаюсь изменить выбор по умолчанию в SelectList Constructor для dropDownList, конструктор selectList допускает третий аргумент, который представляет собой строку, представляющую значение DataTextField для selectList , но когда я пытаюсь одно из следующих действий:Установка значения по умолчанию в DataTextField для SelectList

new SelectList(new[] { 1, 2, 3, 4 }, Model.XXXX.xxxx, 3) 
new SelectList(new[] { 1, 2, 3, 4 }, Model.XXXX.xxxx, "3") 

Я получаю сообщение об ошибке:

"The best overloaded method match has some invalid arguments"

Что я не понимая? Мне кажется, что вторая из вышеперечисленных строк должна работать, так как я даю ей третий аргумент String для отображения в DataTextField.

В качестве небольшого подвопроса, что делает синтаксис

new[] { 1, 2, 3, 4 } 

означает? Я новичок в C# и скобках после того, как новое ключевое слово было чуждо мне.

+0

Вы устанавливаете исходный выбранный параметр, привязывая его к свойству модели. Если у вас есть свойство (скажем) 'Number', и вы устанавливаете его значение' 3', то используйте '@ Html.DropDownListFor (m => m.Number, новый SelectList (новый [] {1, 2, 3, 4 })) 'будет выбирать третий вариант. Вот как работает привязка модели. –

ответ

1
SelectList sl = new SelectList(new[]{ 
    new SelectListItem{ Text="one", Value="1"}, 
    new SelectListItem{ Text="two", Value="2"}, 
    new SelectListItem{ Text="three", Value="3"} 
}, "Text", "Value", "3"); 

К вашему другому вопросу,

new[] { 1, 2, 3, 4 }

вы в основном создание массива Int тип данных с его элементами, как 1, 2, 3 и 4

+0

Вы правы, Richa, upvoting –

0

Конструктор вы используете для SelectList

public SelectList(
    IEnumerable items, 
    string dataValueField, 
    string dataTextField 
) 

MSDN

Когда SelectList отображается через ваш вид, это просто HTML, поэтому вы должны указать анонимный массив как строку, dataValueField и dataTextField как строку. Посмотрите в этом контексте

<select> 
 
     <option value="1">1</option> 
 
     <option value="2">2</option> 
 
     <option value="2">3</option> 
 
     <option value="2">4</option> 
 
    </select>

Измените код, как показано ниже

new SelectList(new[] { "1", "2", "3", "4" }, Model.XXXX.xxxx, "3") 

Model.XXXX.xxxx изменить это поле вашего значения данных.

new[] { 1, 2, 3, 4 } // anonymous type by using the new operator with an object initializer. here this anonymous array is int type. 

MSDN

надеюсь, что это помогает.

1

Один из перегрузок для конструктора SelectList являются следующими

SelectList(IEnumerable, String, String); 

IEnumerable -> элементов для списка

String -> Значение данных поля

String -> данных текстовое поле

Вы IEnumerable new[] { 1, 2, 3, 4 }, который представляет собой в основном массив целых чисел с его элементами как 1, 2, 3 и 4.

Поле данных - это ваша модель, а текстовое поле - «3».

Если вы пытаетесь создать список выбора одного из ваших моделей я хотел бы предложить вам сделать следующий

new SelectList(Model, "Data Value field", "Data text field"); 

Для примера: Если у вас есть модели студента (Std_ID, Std_Name), и вам нужно выбрать список, чтобы показать имена учеников и сохранить значение их идентификатора

new SelectList(Model, "Std_ID", "Std_Name"); 

 Смежные вопросы

  • Нет связанных вопросов^_^