2017-01-24 81 views
0

當我從下拉列表中選擇類別時,它不保存在數據庫中。在數據庫中它顯示爲101的所有值如何在asp.net MVC中保存數據庫中的下拉值

MY view.cshtml是

<h4>RecStock</h4> 
    <hr /> 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
    <div class="form-group"> 
     @Html.LabelFor(model => model.Category, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      <div class="editor-field"> 
       @Html.DropDownList("Category",null, new { @class = "form-control" }) 
       </div> 
       @Html.ValidationMessageFor(model => model.Category, "", new { @class = "text-danger" }) 
      </div> 
    </div> 

我的控制器是

public ActionResult Create() 
    { 
     ViewBag.Category = new SelectList(db.ProductDetails, "id", "Category"); 
     return View(); 
    } 


    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "Category,ProductName,ReceiveQty,Date")] RecStock recStock) 
    { 

     if (ModelState.IsValid) 
     { 
      db.RecStocks.Add(recStock); 
      ViewBag.Category = new SelectList(db.ProductDetails, "id", "Category", recStock.id); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(recStock); 
    } 

回答

0

您應該使用「DropDownListFor」,並指定選擇下拉值到相應的模型屬性,如下所示:

@Html.DropDownListFor(m => m.MyModelProperty, new SelectList(Model.ListOfStuff, "ListOfStuffId", "ListOfStuffName"), string.Empty, new {@class = "form-control", id = "myList"}) 
+0

雖然這是一個更好的語法,但它不會探究在OP的問題 - 這兩種方法最終都會在內部調用相同的代碼(並且您是否認真更新該問題) –

+0

@StephenMuecke爲什麼不呢?他的版本沒有「for」,因此它不知道將哪個模型屬性分配給該值。另外,我沒有更新這個問題,除非我在該評論中遺漏了某些內容) – ganders

+0

對不起,這應該是upvote(而不是更新)。 OP的代碼可能是可怕的做法,但它仍然會正確綁定到名爲'Category'的屬性(假設它是一個int)。這個問題不能回答 - 我們不知道OP的模型或數據是什麼。 –

相關問題