Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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# 如何从selectlist asp.net mvc获取id而不是文本_C#_Asp.net Mvc - Fatal编程技术网

C# 如何从selectlist asp.net mvc获取id而不是文本

C# 如何从selectlist asp.net mvc获取id而不是文本,c#,asp.net-mvc,C#,Asp.net Mvc,这是我的控制器: var repo = new CustomerRepository(); var customerList = repo.GetTemplates(); SendTemplateModel mod = new SendTemplateModel(); mod.Templates = customerList; return View(mod); 以下是下拉视图: @Html.DropDownListFor(x => Model.SelectedTemplate, new

这是我的控制器:

var repo = new CustomerRepository();
var customerList = repo.GetTemplates();
SendTemplateModel mod = new SendTemplateModel();
mod.Templates = customerList;
return View(mod);
以下是下拉视图:

@Html.DropDownListFor(x => Model.SelectedTemplate, new SelectList(Model.Templates, "Value", "Text"), htmlAttributes: new { @class = "form-control", id = "template"})
下面是GetList类

  public IEnumerable<SelectListItem> GetTemplates()
    {
        using (MailsEntities5 context = new MailsEntities5())
        {
            List<SelectListItem> countries = context.templateMails.AsNoTracking()
                .OrderBy(n => n.name)
                    .Select(n =>
                    new SelectListItem
                    {
                        Value = n.Id.ToString(),
                        Text = n.name
                    }).ToList();
            var countrytip = new SelectListItem()
            {
                Value = null,
                Text = "--- Select templates ---"
            };
            countries.Insert(0, countrytip);
            return new SelectList(countries, "Value", "Text");
        }
    }
但是我只能得到模板名称的文本。但为了从实体中获取数据,我想获取Id,它是值。请帮忙

我解决了自己的问题

  public IEnumerable<SelectListItem> GetTemplates()
        {
            using (MailsEntities5 context = new MailsEntities5())
            {
                List<SelectListItem> countries = context.templateMails.AsNoTracking()
                    .OrderBy(n => n.Id)
                        .Select(n =>
                        new SelectListItem
                        {
                            Value = n.Id.ToString(),
                            Text = n.name
                        }).ToList();
                var countrytip = new SelectListItem()
                {
                    Value = null,
                    Text = "--- Select templates ---"
                };
                countries.Insert(0, countrytip);
                return new SelectList(countries, "Value", "Text");
            }
        }

更改为n.Id

模板的属性是什么?public int Id{get;set;}公共字符串名称{get;set;}公共字符串内容{get;set;}什么是repo.GetTemplates;您需要向我们展示相关代码。为什么要在视图中而不是在控制器中创建SelectList?在视图中使用new SelectList从第一个创建另一个相同的IEnumerable`是毫无意义的额外开销-它只是@Html.DropDownListForx=>Model.SelectedTemplate,Model.Templates,new{@class=form control}你要做三次——你希望你的代码有多慢?而且你不会像那样插入空选项-你使用DropDownList的第三个参数,因为你的答案与你问题中的代码相同@StephenMuecke不,它不是。是的,它是-你有Value=n.Id.ToString,Text=n.name在这两者中!