MVC 5填充另一个表中的下拉列表并保存值NOT KEY

时间:2016-03-08 09:57:29

标签: c# asp.net asp.net-mvc-5

问题很简单。我想用另一个表中的值填充DropDownList。但我不想将它们与foreigin密钥联系起来。

我的模特

 public class Application1
 {
    public int Application1Id { get; set; }

    public string ApplicationType { get; set; }
 }

字段ApplicationType应保留ApplicationType的名称(来自其他表格)

我的控制器:

// GET:Application1 / Create

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而不是值。

我会非常感谢任何帮助,花几个小时尝试解决它......

1 个答案:

答案 0 :(得分:0)

尝试更改

ViewBag.AppDataApplicationType = new SelectList(db.AppDataApplicationTypes, "AppDataApplicationTypeId", "Name");

ViewBag.AppDataApplicationType = new SelectList(db.AppDataApplicationTypes, "Name", "Name");