如果我有一个
.cshtml
文件并且有一个FOR
循环如
for (var i = 0; i < Model.Contacts.Count; i++)
我怎么在里面有一个
SELECT
列表,我怎么设置不同的SELECTED
值
Titles = new List<SelectListItem>
{
new SelectListItem{ Value = "Mr", Text = "Mr"},
new SelectListItem{ Value = "Mrs", Text = "Mrs"},
new SelectListItem{ Value = "Miss", Text = "Miss"},
new SelectListItem{ Value = "Dr", Text = "Dr"}
};
newContact.ContactId = 1;
newContact.Title = "Mr";
newContact.Email = "mail@mail";
newContact.HireDate= DateTime.Now.Date.ToString("yyyy-MM-dd");
@for (var i = 0; i < Model.Contacts.Count; i++)
{
<select name="[@i].Title" asp-items="Model.Titles"></select>
为您的 asp 项目使用带有
(IEnumerable items, object selectedValue)
参数的新 SelectList 类,如下所示:
<select name="[@i].Title" asp-items="@(new SelectList(Model.Titles, Model.Title))"></select>
因为下拉列表的值对于每个联系人都是相同的,所以我认为在每个联系人中包含
List<SelectListItem>
不是一个好主意。我写了一个简单的演示来展示我的想法,希望它能给你一些帮助。
型号
public class People
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Title { get; set; }
}
控制器
List<SelectListItem> selectListItems = new List<SelectListItem>()
{
new SelectListItem{ Value = "Mr", Text = "Mr"},
new SelectListItem{ Value = "Mrs", Text = "Mrs"},
new SelectListItem{ Value = "Miss", Text = "Miss"},
new SelectListItem{ Value = "Dr", Text = "Dr"}
};
//For testing, I just hard code here
List<People> people = new List<People>()
{
new People()
{
FirstName = "Bob",
LastName = "Smith",
Title = "Mr",
},
new People()
{
FirstName = "Sam",
LastName = "Perry",
Title = "Mrs"
},
new People()
{
FirstName = "Jack",
LastName = "Jones",
Title = "Dr"
}
};
public IActionResult Index()
{
ViewBag.select = selectListItems;
return View(people);
}
查看
@model List<People>
<form method="post">
@for (var i = 0; i < Model.Count; i++)
{
<div class="form-group">
<label asp-for="@Model[i].FirstName" class="control-label"></label>
<input asp-for="@Model[i].FirstName" class="form-control" />
<span asp-validation-for="@Model[i].FirstName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="@Model[i].LastName" class="control-label"></label>
<input asp-for="@Model[i].LastName" class="form-control" />
<span asp-validation-for="@Model[i].LastName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="@Model[i].Title" class="control-label"></label>
<select asp-for="@Model[i].Title" asp-items="@ViewBag.select" class="form-control"></select>
<span asp-validation-for="@Model[i].Title" class="text-danger"></span>
</div>
}
<button type="submit">Save</button>
</form>
演示
从上图中,每个联系人都会根据其标题的值选择默认值。