1
问题很简单。我想用另一个表中的值填充DropDownList。但我不想将他们与外国人的钥匙联系起来。MVC 5从另一个表中填充下拉列表并保存值NOT KEY
我的模型
public class Application1
{
public int Application1Id { get; set; }
public string ApplicationType { get; set; }
}
场ApplicationType
是一个应该保持ApplicationType
的名称(从其他表)
我的控制器:
// GET:应用程序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();
}
而我的查看:
<div class="form-group">
<div class="col-md-5">
<span class="glyphicon-asterisk" style="color:red;"></span>
@Html.LabelFor(model => model.ApplicationType , htmlAttributes: new { @class = "control-label", style="margin-bottom:10px;" })
@Html.DropDownListFor(model => model.ApplicationType, (SelectList) ViewBag.AppDataApplicationType, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.ApplicationType, "", new { @class = "text-danger" })
</div>
</div>
问题是,当我试图保存这一切都很好,但它是保存id而不是价值。
我会任何帮助非常感激,花个小时试图解决它......
为什么要保存价值,而不是的id? –
如果要保存值,则在选择列表构造函数中将“AppDataApplicationTypeId”,“Name”,“'''转换为''”“Name”,AppDataApplicationTypeId“''或者同时设置为''Name' –
原因很简单。将来的值(对于下拉列表)将会改变。我不喜欢它们在从数据库中删除后消失。所以连接是我不想在这种情况下做的事情。但从另一方面,我想有可能改变ApplicationTypes。这就是为什么。 – Blue