Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Html Id问题_C#_Asp.net Mvc_Automapper - Fatal编程技术网

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>