2013-03-11 62 views
1

您好我有MVC剃刀應用如電子目錄和我用下拉列表以從DB綁定數據,但器DD1綁定相同的值從DB就好像我有三個類別「x,Y,Z」DDL返回類似值「Z,Z,Z」,因爲它有最後一個值「y」。當用戶從DDL中選擇項目時,我也嘗試將選定的值「ID」插入到數據庫中,但我不能,並且它返回錯誤的選定值。如何從DDL由MVC剃刀插入選定的值DB

public class CategoryController : Controller 
{ 
    private AndriodContext db = new AndriodContext(); 
    List<SelectListItem> items = new List<SelectListItem>(); 
    List<string> category = new List<string>(); 
    SelectListItem s = new SelectListItem(); 

    // 
    // GET: /Category/ 

    public ActionResult Index() 
    { 


     var x = db.Categories.Where(y => y.Active == true).ToList(); 



     return View(x); 

    } 



    public ActionResult Create() 
    { 
     var data = db.Categories.ToList().Distinct(); 
     List<string> x = new List<string>(); 

     foreach (var t in data) 
     { 

      s.Text = t.Name; 
      s.Value = t.Cat_ID.ToString(); 

      items.Add(s); 

     } 

     ViewBag.Parent = items; 
     return View(); 
    } 

    // 
    // POST: /Category/Create 

    [HttpPost] 
    public ActionResult Create(Category category, IEnumerable<HttpPostedFileBase> files) 
    { 


     var data = db.Categories.ToList().Distinct(); 
     List<SelectListItem> items = new List<SelectListItem>(); 
     foreach (var t in data) 
     { 
      SelectListItem s = new SelectListItem(); 
      s.Text = t.Name; 
      s.Value = t.Cat_ID.ToString(); 
      items.Add(s); 
      if (s.Selected) 
      { category.Parent_ID = int.Parse(s.Value); } 
     } 


     db.Categories.Add(category); 
     db.SaveChanges(); 

     return RedirectToAction("Index"); 
    } 


} 

@using(Html.BeginForm( 「創建」, 「類別」,FormMethod.Post,新的{ENCTYPE = 「多部分/格式數據」, @data_ajax = 「假」})) { @ Html.ValidationSummary(真)

<fieldset> 
    <legend></legend> 

    <div class="editor-field create-Bt3"> 

     @Html.DropDownList("Parent", new SelectList(ViewBag.Parent, "Value", "Text"), "- Select Parent -") 
    </div> 

    <div> 
     <p class="create-Bt "> 
      <input type="submit" value="Create" /> 
     </p> 
    </div> 
    <br /> 
    <br /> 
    <div> 
     @Html.ActionLink("Back to List", "Index") 
    </div> 
</fieldset> 

}

回答

0

需要導入jQuery的1.7.1.min.js(DOM)在查看頁面: 從jquery網站獲取jquery DOM(http://blog.jquery.com/2011/11/21/jquery-1-7-1-released/)。 然後點擊按鈕(<input type="submit" value="Create" onclick="GetDropDownValue();"/>):

寫了一個javascript函數:

<script type="text/javascript" language="javascript"> 
    function GetDropDownValue() 
    { 
    $("#hdnParentId").val($("#Parent").val()); 
    } 
</script> 
+0

我有這個錯誤「輸入字符串的格式不正確。」這裏category.Parent_ID = int.Parse(hdnParent); – Egydeveloper 2013-03-11 09:46:21

+0

thx,它的工作,但我有新的問題,因爲DDL只返回最後一個值,因爲它沒有返回所有值 – Egydeveloper 2013-03-11 09:53:12

+0

你能發佈完整的代碼片段嗎?在這種情況下,我認爲hdnParent的價值變爲空。 您需要將表單標籤內的隱藏字段。 否則,您可以通過HttpPost方法中的Request [「hdnParent」]獲取值。 – 2013-03-11 09:56:54

0

使用模型綁定下拉列表而不是ViewBag的最佳實踐。

如果你不想使用模型,你可以做一個把戲。 你在查看頁面中放置了一個隱藏字段(<input type="hidden" name="hdnParent" id="hdnParentId" />),並通過簡單的jquery使用: $("#Parent").val();來計算dropdownlis的選定值。

使下拉列表:

@Html.DropDownList("Parent", new SelectList(ViewBag.Parent, "Value", "Text"), "- Select Parent -",new{ id="Parent" }); 

之後,你在控制器得到一個字符串參數HTTPPOST:

[HttpPost] 
public ActionResult Create(string hdnParent) //hdnParent is the name of dropdownlist 
{ 
    //now you can get the seleced value from "hdnParent". 
    //do the stuffs 
    return View(); 
} 
+0

我如何使用$( 「#母公司」)VAL(); – Egydeveloper 2013-03-11 09:06:29

+0

你需要在頁面中導入jquery 1.7.1.min.js(DOM):

  • 11. 從MVC剃刀C#轉換爲MVC剃刀VB
  • 12. MVC剃刀從子視圖
  • 13. 多 - MVC剃刀
  • 14. 在MVC剃刀
  • 15. MVC 3剃鬚刀 - @model IEnumerable的 - 如何讓特定的值
  • 16. 綁定單選按鈕的用戶輸入ASP.NET MVC剃刀
  • 17. 獲得選擇控制的設定值在Asp.net MVC剃刀
  • 18. MVC剃刀路由.mp3文件
  • 19. 鏈接MVC剃刀複選框剃刀文本
  • 20. ASP.net MVC剃刀 - 綁定複選框來布爾值
  • 21. 如何在mvc 5剃鬚刀中顯示enum下拉列表的選定值?
  • 22. 如何從MVC剃刀動態模型獲取屬性值c#
  • 23. ASP MVC PartialView(剃刀)
  • 24. MVC剃刀按鈕
  • 25. MVC 4 ASPX剃刀
  • 26. 在MVC 4剃刀
  • 27. MVC剃刀和Javascript
  • 28. MVC剃刀@ I​​tem.ID
  • 29. MVC剃刀視圖中的HTML.Textarea值
  • 30. 如何從模型綁定集合查看MVC剃刀