2009-12-28 89 views
0

我是MVC編程的新手。我將其他數據庫表中的值傳遞給我的編輯,並創建視圖來填充某些下拉列表。它運作良好。我在我的控制器中編輯和創建如下代碼:將值傳遞給mvc視圖中的下拉列表

var db = new MyProgramDataContext(); Order order = orderRepository.GetOrder(id); 計算機[ 「客戶」] =從C中db.customers 選擇新SelectListItem { 文本= c.customer_name, 值= c.customer_name } 返回視圖(順序);

我想將select語句移動到Respository以使事情更清潔一點,以便在Edit和Create中不重複相同的選擇。

ViewData [「customer」] = orderRepository.GetCustomers();

在Respository中,GetCustomers的返回類型是否應該是SelectListItem?我似乎無法得到它的工作。

+0

您可能應該使用您正在執行此MVC編程的框架和語言對此進行標記。 MVC是一種在許多方面已經實現了很長時間的模式。 –

+0

嗯,我認爲這是我的第一個標籤,但它不存在...對不起! – RememberME

回答

0

現在我有在FormViewModel類中選擇列表,並使用部分視圖來編輯和創建代碼。感謝大家。

1

退房羅布科納是如何實現它在自己的博客:

http://blog.wekeroad.com/blog/asp-net-mvc-dropdownlist-and-html-attributes/

你可以得到所有的客戶,然後創建的SelectList並據此設定的ViewData。

+0

OK,所以我現在將數據從Respository返回爲IQueryable,然後在Controller中執行: ViewData [「customer」] = new SelectList(orderRespository.GetCustomers(),「customer_name」,「customer_name」,order.customer ); 這是工作。這是最好的方法嗎? – RememberME

+0

如果有效,請繼續使用它。如果/當您找到適合您的更好實施時,您可以隨時返回此代碼。 –

0

在這條路上嘗試一些輔助類像DDLHelper

<select id="idXYZ" name="XYZ"> 
    <%= DDLHelper.DDl_order(Model.orderId)%> 
</select> 

移動這樣那樣的功能,寫你的函數在一些輔助類像DDLHelper

public static string DDl_order(int orderId) 
     { 
      string format = "<option value=\"{0}\" {2} >{1}</option>"; 
      System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
      sb.AppendFormat(format, "", "--Select--", ""); 

      List<Models.UrClass> urclass=orderRepository.GetCustomers(); 

      foreach (var item in client) 
      { 
       string ordid = item.orderId.ToString().Encrypt(); 

       if (item.ClientID == orderId) 
        sb.AppendFormat(format, orderid , item.OrdName,selected=\"selected\""); 
       else 
        sb.AppendFormat(format, ordid , item.OrdName, ""); 
      } 
      return sb.ToString(); 
     } 
相關問題