2012-04-11 156 views
0

在我的Addcar視圖我有表格允許我插入數據到我的數據庫(表Car)。用外鍵插入表中?

在表Car我有colonne (Idcat)它是與Categorie表相關的外鍵。

因此,在我的添加表單中,我應該有一個dropDownlist,允許用戶選擇他想要添加的汽車的類別。

這是我的部分觀點:

   <div class="editor-label"> 
    <p> 
     <%: Html.LabelFor(model => model.Idcat) %> 
    </p> 
    </div> 
    <div class="editor-field"> 
    <p> 
    <!-- in this dropDownList i want to show the all Name Of Marque in my forgien table and user when he select value wil be set at id of selected marque --> 
     <%: Html.DropDownListFor(model => model.Idcat, ViewBag.cat as SelectList)%> 
     <%: Html.ValidationMessageFor(model => model.Idcat) %> 
    </p> 
    </div> 

這是我的控制器操作:

 public ActionResult addcar() 
    { 

     ViewBag.cat = new SelectList(entity.categorie, "Idcat", "Nom"); 

     return View(); 
    } 

這項工作很好,直到我集團公司在創造他告訴我這個錯誤There is no ViewData item of type 'IEnumerable <SelectListItem>' with key 'Idcat'.在該行<%: Html.DropDownListFor(model => model.Idcat, ViewBag.cat as SelectList)%>

+0

我已更新我的帖子,請檢查它。 – Chlebta 2012-04-11 22:34:23

回答

0

在ASP.Net MusicStore教程中有一個示例,您可以從給定的流派列表中進行選擇。流派列表是通過由控制器填補了viewbag傳遞給視圖:

MusicStore Tutorial

這可能是你在尋找什麼。

+0

他使用List預定義列表,也不是很清楚。 – Chlebta 2012-04-11 19:55:33

+0

本教程對此非常清楚。請參閱「使用ViewBag將信息傳遞到視圖」和「HTML助手在創建視圖中顯示下降傾向」部分。在你的情況下,你將不得不在控制器中獲得所有可用的商標,將它傳遞給視圖並從該列表構建列表。如果這不是你所需要的,那麼更具體。 – 2012-04-11 20:01:27

+0

I'cant將多個模型傳遞給我的視圖,並且我的視圖已使用Models.Cars,因此我無法將其傳遞給另一個模型 – Chlebta 2012-04-11 20:03:57

0

模型綁定實際上只綁定單個元素。所以這是很好的綁定Idmarque。顯示可能值的下拉列表並沒有幫助。對我來說,這似乎是框架中缺乏的東西,因爲它會讓你停止使用EditorForModel。您必須決定如何處理獲取下拉列表。你有一個Html Helper可以查詢數據庫並繪製一個選項列表嗎?或者,您是否希望讓控制器調用模型方法來獲取選項列表,並將其作爲視圖模型的一部分傳遞給視圖?可能希望避免傳遞數據讀取器,因爲如果您這樣做,您可能會有打開的連接問題。