C# MVC 5从另一个表填充下拉列表并保存值非键
问题很简单。我想用另一个表中的值填充DropDownList。但我不想把它们和外国钥匙联系起来 我的模型C# MVC 5从另一个表填充下拉列表并保存值非键,c#,asp.net,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc 5,问题很简单。我想用另一个表中的值填充DropDownList。但我不想把它们和外国钥匙联系起来 我的模型 public class Application1 { public int Application1Id { get; set; } public string ApplicationType { get; set; } } 字段ApplicationType应保留ApplicationType的名称(来自其他表) 我的控制器: //获取:应用程序1/创建 pub
public class Application1
{
public int Application1Id { get; set; }
public string ApplicationType { get; set; }
}
字段ApplicationType
应保留ApplicationType
的名称(来自其他表)
我的控制器:
//获取:应用程序1/创建
public ActionResult Create()
{
ViewBag.AppDataApplicationType = new SelectList(db.AppDataApplicationTypes, "AppDataApplicationTypeId", "Name");
return View();
}
// POST: Application1/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Application1 application1)
{
if (ModelState.IsValid)
{
db.Application1.Add(application1);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.AppDataApplicationTypeId = new SelectList(db.AppDataApplicationTypes, "AppDataApplicationTypeId", "Name");
return View();
}
我的看法是:
@LabelFor(model=>model.ApplicationType,htmlAttributes:new{@class=“control-label”,style=“margin-bottom:10px;”)
@DropDownListFor(model=>model.ApplicationType,(SelectList)ViewBag.AppDataApplicationType,htmlAttributes:new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.ApplicationType,“,new{@class=“text danger”})
问题是,当我试图保存它时,一切都正常,但它保存的是id而不是值
我将非常感谢任何帮助,花几个小时来尝试解决它 试试换衣服
ViewBag.AppDataApplicationType = new SelectList(db.AppDataApplicationTypes, "AppDataApplicationTypeId", "Name");
到
试着改变
ViewBag.AppDataApplicationType = new SelectList(db.AppDataApplicationTypes, "AppDataApplicationTypeId", "Name");
到
为什么要保存值而不是id?如果要保存值,请在selectlist构造函数中将
“AppDataApplicationTypeId”、“Name”
切换到“Name”、AppDataApplicationTypeId“
,或者将两者都设置为Name
,原因很简单。在将来,值(对于dropdownlist)将更改。我不希望它们在从数据库中删除后消失。因此,在这种情况下,连接是我不喜欢做的事情。但从另一方面来说,我希望有可能更改应用程序类型。这就是为什么。你的意思是在控制器中执行此操作?为什么要保存值而不是id?如果要保存值,请在selectlist构造函数中将“AppDataApplicationTypeId”、“Name”
交换到“Name”、AppDataApplicationTypeId“
,或者将两者都设置为Name
,原因很简单。在将来,值(对于dropdownlist)将更改。我不希望它们在从数据库中删除后消失。因此,在这种情况下,连接是我不喜欢做的事情。但从另一方面来说,我希望有可能更改应用程序类型。这就是为什么。你是说在控制器里做?