如何选择哪一列从“洋”表将显示在视图中?(How do I choose which column

2019-10-19 15:56发布

我建立与实体框架数据库首先一个简单的ASP.NET MVC应用程序,允许用户在一个数据库编辑表。 一个表有一个外键到另一个表。 我希望用户能够改变外键值。

我的问题:如何选择哪一列从“洋”表将显示在视图中的用户? 我搭建的观点,但是它显示错误的列。

外键是在DealerAuto表,该表中的列:DealerAutoID,DealerID,DealerMakeName,DealerModelName。 出于某种原因,在DealerAutoID视图中的下拉列表中拉动DealerMakeName。 我希望它在DealerModelName拉。

View.cshtml:

@model ModelYearChange.Models.DealerAutoTrim

[...]

<div class="form-group">
        @Html.LabelFor(model => model.DealerAutoID, "DealerAutoID", new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownList("DealerAutoID", String.Empty)
            @Html.ValidationMessageFor(model => model.DealerAutoID)
        </div>
    </div>

DealerAutoTrimController.cs:

public ActionResult Create()
    {
        ViewBag.DealerAutoID = new SelectList(db.DealerAutoes, "DealerAutoID", "DealerMakeName");
        ViewBag.DealerModelName = new SelectList(db.DealerAutoes, "DealerModelName", "DealerModelName");

        return View();
    }

    // POST: /DealerAutoTrim/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "DealerAutoTrimID,DealerAutoID,DealerTrimName,DealerTrimMSRP,DealerTrimMPG_City,DealerTrimMPG_Highway,DealerTrimBulletPoints,Year")] DealerAutoTrim dealerautotrim)
    {
        if (ModelState.IsValid)
        {
            db.DealerAutoTrims.Add(dealerautotrim);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.DealerAutoID = new SelectList(db.DealerAutoes, "DealerAutoID", "DealerMakeName", dealerautotrim.DealerAutoID);
        return View(dealerautotrim);
    }

Answer 1:

您的列表绑定是种搞砸了:)

首先,你只需要解析,以查看一个的SelectList。 所以,在你的控制器,只需

ViewBag.DealerAutoes = SelectList(db.DealerAutoes, "DealerModelId", "DealerModelName");

注:第二个的SelectList参数指定哪些领域将成为下拉的“价值”,第三个参数定义什么领域成为“文本”的价值。

然后,在你看来,你可以简单地有:

@Html.DropDownListFor(m => m.DealerAutoId, (SelectList)ViewBag.DealerAutoes)


文章来源: How do I choose which column from the “foreign” table is displayed in the view?