将viewbag值和文本设置为相同的字段

时间:2015-09-25 09:39:23

标签: razor asp.net-mvc-5

通常当使用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);
}

视图

<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>

对于性别而言设置相同,唯一的区别是,对于性别,它有一个值和文本列。

当我为下拉框加载员工时,值存在,但是如果我完成表单并移动到下一个表单,则回击除了标题之外的所有其他值。如果我提交表格,则存储标题值,以便我知道这不是价值丢失的问题。

1 个答案:

答案 0 :(得分:0)

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

  1. Model.Title空白进入视图。
  2. Model.Title 一个值,但它与任何选项值都不匹配。
  3. ModelState中的某些内容优先(ViewBag.TitleViewData["Title"]Request["Title"]设置为与任何选项值都不匹配的内容。)