我正在尝试更改dropDownList的SelectList构造函数中的默认选择,selectList构造函数允许第三个参数,该参数是表示selectList的DataTextField值的字符串,但是当我尝试以下任一操作时:
new SelectList(new[] { 1, 2, 3, 4 }, Model.XXXX.xxxx, 3)
new SelectList(new[] { 1, 2, 3, 4 }, Model.XXXX.xxxx, "3")
我收到错误:
“最好的重载方法匹配有一些无效的参数”
我不理解什么?在我看来,上面的第二行应该工作,因为我给它第三个String参数显示在DataTextField中。
作为次要问题,语法是什么
new[] { 1, 2, 3, 4 }
意思?我不熟悉C#和新关键字之后的括号。
答案 0 :(得分: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
答案 1 :(得分:1)
SelectList构造函数的一个重载是以下
SelectList(IEnumerable, String, String);
IEnumerable - >列表的项目
字符串 - >数据值字段
字符串 - >数据文本字段
你IEnumerable是new[] { 1, 2, 3, 4 }
,它基本上是一个整数数组,其元素为1,2,3和4。
数据值字段是您的模型,文本字段是" 3"。
如果您尝试从其中一个模型创建选择列表,我建议您执行以下操作
new SelectList(Model, "Data Value field", "Data text field");
例如: 如果您有学生模型(Std_ID,Std_Name),则需要一个选择列表来显示学生姓名并保留其ID的值
new SelectList(Model, "Std_ID", "Std_Name");
答案 2 :(得分:0)
您用于SelectList的构造函数
public SelectList(
IEnumerable items,
string dataValueField,
string dataTextField
)
当通过View呈现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>
&#13;
更改以下代码
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.
希望它有所帮助。