[英]html.hiddenfor for disabled dropdownlist with default value MVC
我已經編輯了de Create視圖,以添加一個隱藏的字段控件,但是我無法獲取該值
<div class="form-group">
@Html.LabelFor(model => model.EmpresaId, "Empresa", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("EmpresaId", null, htmlAttributes: new { @class = "form-control", @disabled = "disabled" })
@Html.HiddenFor(model => model.EmpresaId)
@Html.ValidationMessageFor(model => model.EmpresaId, "", new { @class = "text-danger" })
</div>
</div>
創建的html是:
<div class="form-group">
<label class="control-label col-md-2" for="EmpresaId">Empresa</label>
<div class="col-md-10">
<select class="form-control" disabled="disabled" id="EmpresaId" name="EmpresaId">
<option selected="selected" value="1">Farmacia MZ</option>
<option value="2">Credesa</option>
</select>
<input length="19" id="EmpresaId" name="EmpresaId" type="hidden" value="">
<span class="field-validation-valid text-danger" data-valmsg-for="EmpresaId" data-valmsg-replace="true"></span>
</div>
</div>
如您所見,隱藏的輸入沒有任何價值。
在Controller上設置了DropDownList默認值:
public ActionResult Create()
{
ApplicationUser usr = db.Users.Find(User.Identity.GetUserId().ToString());
int userId = (int)usr.EmpresaId;
ViewBag.CategoriaId = new SelectList(db.Categorias, "CategoriaId", "Nombre");
ViewBag.EmpresaId = new SelectList(db.Empresas, "EmpresaId", "Nombre", userId); <-- defalut value for disabled DropDownList
ViewBag.MarcaId = new SelectList(db.Marcas, "MarcaId", "Nombre");
return View();
}
我已經搜索了很多,但是我不明白這是什么錯誤。 幫助很好!
此HiddenFor
幫助程序顯然HiddenFor
到EmpresaId
viewmodel屬性:
@Html.HiddenFor(model => model.EmpresaId)
隱藏字段值具有空值,因為它沒有從GET操作方法中的相應viewmodel屬性分配,因為實際上是將EmpresaId
默認值分配給包含SelectList
ViewBag.EmpresaId
。
ViewBag.EmpresaId = new SelectList(db.Empresas, "EmpresaId", "Nombre", userId);
因此,您需要創建一個viewmodel實例,然后將默認值分配給viewmodel屬性並返回到GET操作方法中的視圖:
// create new instance of viewmodel and set default property value
var model = new ViewModel();
model.EmpresaId = userId;
// return default values from viewmodel to view page
return View(model);
或者只是在創建視圖模型實例時設置默認值:
var model = new ViewModel()
{
EmpresaId = userId;
};
return View(model);
附帶說明一下,請始終使用強類型的DropDownListFor
輔助方法代替DropDownList
來綁定viewmodel屬性:
@Html.DropDownListFor(m => m.EmpresaId, ViewBag.EmpresaList as SelectList, new { @class = "form-control", @disabled = "disabled" })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.