【发布时间】:2018-05-07 06:34:15
【问题描述】:
两个相同的@Html.DropDownList 语句正在呈现不同的HTML。第二个工作正常,但第一个总是返回默认值,无论选择什么。
@Html.DropDownList 语句在以下代码中:
<div class="form-group">
@Html.LabelFor(model => model.UnidadeId, "Unidade", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("UnidadeId", (SelectList)ViewBag.UnddId, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.UnidadeId, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.UnidadeConsumoId, "Unidade de Consumo", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("UnidadeConsumoId", (SelectList)ViewBag.UndConsId, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.UnidadeConsumoId, "", new { @class = "text-danger" })
</div>
</div>
以及它正在呈现的 HTML:
<div class="form-group">
<label class="control-label col-md-2" for="UnidadeId">Unidade</label>
<div class="col-md-10">
<select class="form-control" id="UnidadeId" name="UnidadeId">
<option value="1">cx</option>
<option value="2">pc</option>
<option selected="selected" value="3">kg</option>
<option value="4">mt</option>
<option value="5">rl</option>
<option value="6">ml</option>
<option value="8">na</option>
<option value="9">hr</option>
<option value="10">un</option>
<option value="11">lt</option>
</select>
<span class="field-validation-valid text-danger" data-valmsg-for="UnidadeId" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="UnidadeConsumoId">Unidade de Consumo</label>
<div class="col-md-10">
<select class="form-control" data-val="true" data-val-number="The field Unidade de Consumo must be a number." data-val-required="The Unidade de Consumo field is required." id="UnidadeConsumoId" name="UnidadeConsumoId">
<option value="1">cx</option>
<option value="2">pc</option>
<option value="3">kg</option>
<option value="4">mt</option>
<option value="5">rl</option>
<option value="6">ml</option>
<option value="8">na</option>
<option value="9">hr</option>
<option selected="selected" value="10">un</option>
<option value="11">lt</option>
</select>
<span class="field-validation-valid text-danger" data-valmsg-for="UnidadeConsumoId" data-valmsg-replace="true"></span>
</div>
</div>
为了将所有信息放在一起,列表由以下人员生成:
ViewBag.UnddId = new SelectList(db.Unidades, "UnidadeId", "Apelido", insumo.UnidadeId);
ViewBag.UndConsId = new SelectList(db.Unidades, "UnidadeId", "Apelido", insumo.UnidadeConsumoId);
Unidade 在哪里:
public class Unidade
{
public int UnidadeId { get; set; }
public string Apelido { get; set; }
public string Descricao { get; set; }
}
可以看出,“select”语句不同,结果也不同。第一个下拉列表仅返回默认值,第二个返回选择的下拉列表...我自己无法弄清楚发生了什么...提前谢谢!
GET 代码是:
public ActionResult Edit(int? id)
{
Insumo insumo = db.Insumos.Find(id);
if (insumo == null) return HttpNotFound();
ViewBag.UnddId = new SelectList(db.Unidades, "UnidadeId", "Apelido", insumo.UnidadeId);
ViewBag.UndConsId = new SelectList(db.Unidades, "UnidadeId", "Apelido", insumo.UnidadeConsumoId);
return View(insumo);
}
【问题讨论】:
-
你能分享你的GET操作方法代码吗?
-
另外,您共享的 HTML 标记与剃须刀代码不匹配!它不可能生成带有
name或idUnId 的SELECT 元素。看起来你没有在问题中分享正确的代码!!! -
另外,您应该考虑使用视图模型并通过它传递集合,同时使用将正确绑定项目的
Html.DropDownListFor帮助方法 -
@Shyju 我在最后发布了 GET 代码...
-
阅读我的第二条评论和第三条评论
标签: c# html asp.net-mvc razor