2017-08-17 50 views
-1
Controller 
public class ProController : Controller 
    { 
     string CS = ConfigurationManager.ConnectionStrings["OnlineInventoryDB"].ConnectionString; 
 [HttpGet] 
     public ActionResult Create() 
     { 
      Get_catagory(); 
      return View(); 
     } 

     [HttpPost] 
     [ActionName("Create")] 
     public ActionResult Create_Post(Product product) 
     { 


      if (ModelState.IsValid) 
      { 
       pro.AddProduct(product); 
       return RedirectToAction("Index"); 
      } 
      return View(); 
     } 



     public void Get_catagory() 
     { 

      SqlConnection con = new SqlConnection(CS); 
      if (con.State == ConnectionState.Closed) 
      { 
       con.Open(); 
      } 
      SqlDataAdapter sda = new SqlDataAdapter("DDLCatagory", con); 
      sda.SelectCommand.CommandType = CommandType.StoredProcedure; 
      DataTable dt = new DataTable(); 
      sda.Fill(dt); 

      List<SelectListItem> ddlcatlist = new List<SelectListItem>(); 

      foreach(DataRow dr in dt.Rows) 
      { 
       ddlcatlist.Add(new SelectListItem { Text = dr["Catagory"].ToString(), Value = dr["Cat_ID"].ToString() }); 
      } 
      ViewData["cataglistddl"] = ddlcatlist; 
     } 


    } 

強類型有類型的無ViewData的項目 '的IEnumerable <SelectListItem>' 具有鍵 'ddlcataglist'

@model BuisnessLogics.Product

@{ 
    ViewBag.Title = "Create"; 
} 

<h2>Create</h2> 

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>Product</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.Prod_Catagory, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownList("ddlcataglist", ViewData["cataglistddl"] as List<SelectListItem>,"Select Cataegory", new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.Prod_Catagory, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Cost, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Cost, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Cost, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

在頁面提交時,沒有Vi顯示具有鍵「ddlcataglist」錯誤的類型爲「IEnumerable」的ewData項目並且未提交該頁面。

+1

另請閱讀[如何創建最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve) - 關鍵詞是** minimal **。 99%的代碼與你的問題無關 –

回答

0

您還需要在post方法中重新綁定您的下拉列表。

[HttpPost] 
[ActionName("Create")] 
public ActionResult Create_Post(Product product) 
{ 
     Get_catagory(); 
     if (ModelState.IsValid) 
     { 
      pro.AddProduct(product); 
      return RedirectToAction("Index"); 
     } 

    return View(); 
} 
+1

'ViewData [「cataglistddl」]'已經是'IEnumerable ' - 這只是毫無意義的額外開銷 –

+0

@StephenMuecke其實問題是他沒有綁定下拉值post方法。 –

+1

我知道 - 這就是爲什麼我騙了它:) –

相關問題