亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ASP.NET MVC POST不會發回第二次出現變量

ASP.NET MVC POST不會發回第二次出現變量

C#
翻閱古今 2021-05-07 14:08:28
班級Unidade:public class Unidade{    public int UnidadeId { get; set; }    public string Apelido { get; set; }    public string Descricao { get; set; }}在Insumo類中兩次使用,如Unidade和UnidadeConsumopublic class Insumo{    public int InsumoId { get; set; }    public string Apelido { get; set; }    public string Descricao { get; set; }    public int UnidadeId { get; set; }    public Unidade Unidade { get; set; }    public int UnidadeConsumoId { get; set; }    public Unidade UnidadeConsumo { get; set; }}要編輯Insumo,控制器中有兩個EDIT操作: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);}和后編輯:[HttpPost]public ActionResult Edit([Bind(Include = "InsumoId,Apelido,Descricao,UnidadeId,UnidadeConsumoId")] Insumo insumo){if (ModelState.IsValid)        {            db.Entry(insumo).State = EntityState.Modified;            db.SaveChanges();            return RedirectToAction("Index");        }    ViewBag.UnddId = new SelectList(db.Unidades, "UnidadeId", "Apelido", insumo.UnidadeId);    ViewBag.UndConsId = new SelectList(db.Unidades, "UnidadeId", "Apelido", insumo.UnidadeConsumoId);    return View(insumo);    }用于顯示要編輯的字段的視圖包括兩個用于選擇兩個單位的下拉列表:@model Gestor.Models.Insumo@{    ViewBag.Title = "Alterar";    Layout = "~/Views/Shared/_Layout.cshtml";}<h2>Alterar</h2>@using (Html.BeginForm()){@Html.AntiForgeryToken()<div class="form-horizontal">    <h4>Insumo</h4>    <hr />    @Html.Partial("CopyEdit")    <div class="form-group">        <div class="col-md-offset-2 col-md-10">            <input type="submit" value="Gravar" class="btn btn-default" />        </div>    </div></div>}問題是返回到POST Edit操作后,所有字段都可以,但是UnidadeConsumoId始終為0,數據庫中什至不存在什么?有人可以告訴我為什么它不返回期望值,即下拉列表中的所選值反映了if的ID嗎?
查看完整描述

1 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

因為您當前的代碼正在渲染具有name屬性value的SELECT元素UndConsId。


<select class="form-control" name="UndConsId">

   <!-- options -->

</select>

為了使模型綁定生效,輸入元素name 屬性值應與http post操作方法中使用的參數/屬性名稱匹配。您的參數名稱是UnidadeConsumoId,不是UndConsId


要解決此問題,UnidadeConsumoId請將作為DropDownList方法調用的第一個參數傳遞,以便它將使用呈現SELECT元素name UnidadeConsumoId。您可以將 傳遞ViewBag.UndConsId為第二個參數以顯式指定用于構建 SELECT 元素的集合。


這應該工作


@Html.DropDownList("UnidadeConsumoId", ViewBag.UndConsId as SelectList, 

                                      new { @class = "form-control" })


查看完整回答
反對 回復 2021-05-29
  • 1 回答
  • 0 關注
  • 136 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號