Razor 将viewbag值和文本设置为同一字段

Razor 将viewbag值和文本设置为同一字段,razor,asp.net-mvc-5,Razor,Asp.net Mvc 5,通常,当使用viewbags作为下拉列表时,它们包含id列和值列,但对于标题列,我不得不更改它,因为它来自第三方应用程序,现在它不再像以前那样工作了。它会使下拉列表返回,但当我点击“后退”按钮并使用会话变量重新填充表单时,没有为此设置值,因为它可以正常工作 public ActionResult _NewEmpDetails() { var sessionValues = Session["MySessionValues"] as MySessionValues; ViewBag

通常,当使用viewbags作为下拉列表时,它们包含id列和值列,但对于标题列,我不得不更改它,因为它来自第三方应用程序,现在它不再像以前那样工作了。它会使下拉列表返回,但当我点击“后退”按钮并使用会话变量重新填充表单时,没有为此设置值,因为它可以正常工作

public ActionResult _NewEmpDetails()
{
    var sessionValues = Session["MySessionValues"] as MySessionValues;
    ViewBag.NameTitle = new SelectList(db.vwInproTitle.ToList(), "Title", "Title");
    ViewBag.Gender = new SelectList(db.vwLkUpGender.ToList(), "GenderID", "Gender");
    Employee Employee = sessionValues.Employee;
    return PartialView("_NewEmpDetails", Employee);
}
看法


@LabelFor(model=>model.Title)
@Html.DropDownListFor(model=>model.Title,(SelectList)ViewBag.nametTitle,“请选择一个标题”,新建{@class=“dropdown”,id=“txtTitle”})
@Html.ValidationMessageFor(model=>model.Title,“,new{@class=“text danger”})
对于性别,它的设置是相同的,唯一的区别是对于性别,它有一个值和文本列


当我为下拉框加载employee时,值就在那里,但是如果我完成表单并移动到下一个表单,那么返回所有其他值,除了title。如果我提交表单,则会存储标题值,这样我就知道这不是值丢失的问题。

如果标题下拉列表中未选择任何内容,则会出现以下情况之一:

  • Model.Title进入视图时为空
  • Model.Title
    有一个值,但它与任何选项值都不匹配
  • 您在
    ModelState
    中有优先权(
    ViewBag.Title
    ViewData[“Title”]
    Request[“Title”]
    设置为与任何选项值都不匹配的内容。)
  • <div style="display: table-cell;" class="tCell">
        <div>@Html.LabelFor(model => model.Title) </div>
        <div>@Html.DropDownListFor(model => model.Title, (SelectList)ViewBag.NameTitle, "Please select a title", new { @class = "dropdown", id = "txtTitle" })</div>
        <div>@Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" }) </div>
    </div>