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在这两者中!