我试着在我看来做这样的事情:
@{
string selectgedOne = ViewBag.sellectedvalue;
}
@Html.DropDownListFor(x => x.Category, Model.Categories.Select(x => new SelectListItem { Text = x.ToString(), Value = x.ToString(), Selected = x.ToString().Equals(selectgedOne.ToString()) }))
但是回归的是......
System.Web.Mvc.SelectListItem
我在使用这个版本时有点成功...
@Html.DropDownListFor(x => x.Category, Model.Categories, selectgedOne)
...这里它设置了列表框中的值,但是当我在页面框中我看到第一个选项值没有设置为与文本相同...
<select id="Category" name="Category">
<option value="">Tests</option>
<option value="In class participation">In class participation</option>
<option value="Homework">Homework</option>
<option value="Projects">Projects</option>
<option value="Tests">Tests</option>
<option value="Other">Other</option>
</select>
...所以,如果我将其发布到控制器,则分类将是一个空字符串。
如何让我的SelectListItem重载将“Value”属性设置为与“Text”属性相同?
感谢您的帮助。
答案 0 :(得分:0)
我在列表顶部发送了我想要的值(assignCategory),然后......
public ActionResult Categories(int? id, int? department, String assignCategory)
{
var categories = new List<SelectListItem>();
for (int i = 0; i < rubricsList.Count(); i++)
{
categories.Add(new SelectListItem
{
Text = rubricsList[i],
Value = rubricsList[i],
Selected = true
});
}
switch (assignCategory)
{
case "A":
categories.Insert(0, new SelectListItem
{
Text = rubricsList[0],
Value = rubricsList[0],
Selected = true
});
break;
// More cases here
}
返回视图是部分的,只有一行,如下所示:
@Html.DropDownListFor(x => x.Category, Model.Categories)
现在,下拉列表中的第一个值已设置,可以正确提交