C# Html Id问题
我有类似的东西C# Html Id问题,c#,asp.net-mvc,automapper,C#,Asp.net Mvc,Automapper,我有类似的东西 public class Reminders() { public List<SelectListItem> Reminder { get; set; } public string SelectedReminder { get; set; } } 公共类提醒() { 公共列表提醒{get;set;} 公共字符串SelectedReminder{get;set;} } 现在,我想列出一个包含上述内容的提醒类列表 List<Reminders>
public class Reminders()
{
public List<SelectListItem> Reminder { get; set; }
public string SelectedReminder { get; set; }
}
公共类提醒()
{
公共列表提醒{get;set;}
公共字符串SelectedReminder{get;set;}
}
现在,我想列出一个包含上述内容的提醒类列表
List<Reminders> reminders = new List<Reminders>();
// add SelectListItems somehow through auto mapper( not sure how to do)
// add reminders into my viewModel
列表提醒=新建列表();
//通过自动映射器以某种方式添加SelectListItems(不确定如何操作)
//将提醒添加到我的viewModel中
然后在我看来,我需要循环遍历它们来生成下拉列表。所以我的想法是,如果我希望用户能够设置5个提醒,那么我只需确保我的收藏有5个提醒
如果我希望它们只有1个,我会确保集合中有一个提醒。如果我想要100,我就把它改成100。所以,通过这样做,我证明了这个区域可以很容易地扩大或缩小
现在,在我尝试去做这件事,并试图找出如何与automapper做到这一点之前,我想知道我如何才能使每个下拉列表有自己的id?就像现在一样,我可以看到他们都有相同的id(“SelectedReminder”)
当然这是不好的,因为每个html页面应该只有一个id。那么,如何使它们具有不同的ID呢?如果您使用的是编辑器模板,您不必担心这一点,因为框架将正确处理所有命名约定。你也不需要做任何循环。因此,假设您有一个返回
IEnumerable
的控制器操作,并且希望生成一个下拉列表:
public ActionResult Index()
{
var reminders = new[]
{
new Reminders
{
Reminder = new List<SelectListItem>
{
new SelectListItem { Value = "1", Text = "reminder 1" },
new SelectListItem { Value = "2", Text = "reminder 2" },
},
},
new Reminders
{
Reminder = new List<SelectListItem>
{
new SelectListItem { Value = "1", Text = "reminder 1" },
new SelectListItem { Value = "2", Text = "reminder 2" },
new SelectListItem { Value = "3", Text = "reminder 3" },
},
}
};
return View(reminders);
}
由于您在视图模型中发送了2个图元,因此将生成2个下拉列表,每个下拉列表都具有正确的名称,以便在发回时可以获得相应的选定值:
<select name="[0].SelectedReminder">
<option value="1">reminder 1</option>
<option value="2">reminder 2</option>
</select>
<select name="[1].SelectedReminder">
<option value="1">reminder 1</option>
<option value="2">reminder 2</option>
<option value="3">reminder 3</option>
</select>
提醒1
提醒2
提醒1
提醒2
提醒3
由于我的观点有点不同,所以我很难让它正常工作。“我的强类型视图”是一个ViewModel,其中包含一个包含我在OP中发布的提醒类内容的提醒服务模型列表。因此提醒类实际上是我的ViewModel。我还应添加该提醒服务模型还将包含其他selectList项,以生成所需的其他下拉列表。@chobo2,在这种情况下,您的视图中不是@Html.EditorForModel()
,而是@Html.EditorFor(x=>x.rementerviewmodels)
,其中rementerviewmodels
是IEnumerable
类型视图模型的属性。然后你也可以在表单中使用其他的编辑器,我试着这样做,但它不喜欢复杂的数据或其他东西。我必须在模板中执行forloop,然后执行@Html.DropDownListFor(x=>x[I].SelectedReminder,newselectlist(Model[I].rementer,“Value”,“Text”))之类的操作。如果不在模板中使用forloop,我无法理解如何执行该操作。
@model AppName.Models.Reminders
@Html.DropDownListFor(
x => x.SelectedReminder,
new SelectList(Model.Reminder, "Value", "Text")
)
<select name="[0].SelectedReminder">
<option value="1">reminder 1</option>
<option value="2">reminder 2</option>
</select>
<select name="[1].SelectedReminder">
<option value="1">reminder 1</option>
<option value="2">reminder 2</option>
<option value="3">reminder 3</option>
</select>