2011-05-09 42 views
0

嘿, 我有三個IQueryable列表,我將它們連接成一個列表以顯示在下拉框中。但是現在我想獲得用戶選擇的ID,因爲有3個列表供您選擇。由於從下拉列表中獲取值的標識

例子:

IQueryable<Store> stores= _storeRepository.FindAll().OrderBy(c => c.Description); 
     var storeList = stores.ToSelectList("StoreId", "Description", viewModel.StoreId.ToString()); 

     IQueryable<Product> products = _productRepository.FindAll().OrderBy(j => j.Name); 
     var productList = products.ToSelectList("ProductId", "Name", viewModel.ProductId.ToString()); 



var viewList = storeList.Concat(productList).ToList(); 
viewModel.Lookups = viewList; //display in dropdown 
+0

所有三個列表中是否有唯一的ID? – Tejs 2011-05-09 19:37:12

+0

發表一些代碼?所有列表元素都會有一個ID。你的意思是你想要IQueryable列表的ID嗎? – WEFX 2011-05-09 19:45:11

+0

我添加了一個我詢問的代碼示例。 – Masriyah 2011-05-09 19:54:22

回答

0

所以這就是我如何解決我的問題。在我的控制器文件 - 在按鈕後,我的Get方法點擊這是我做的:

 resultSummaryViewModel.Value = value; 
     resultSummaryViewModel.ReportFrame = new FramedViewModel(); 

     if(value !="") 
     { 
      string viewValue = value.Substring(0, value.IndexOf("|")); 
      string viewType = value.Substring(value.IndexOf("|") + 1); 

      resultSummaryViewModel.ReportFrame.SourceURL = 
       WebPathHelper.MapUrlFromRoot(
        string.Format(
         "Reporting/ResultSummary.aspx?beginDate={0}&endDate={1}&Id={2}&viewType={3}", 
         resultSummaryViewModel.BeginDate, resultSummaryViewModel.EndDate, viewValue, 
         viewType)); 
     } 
     var viewData = new Dictionary<string, string>(); 
     viewData.Add("Schools", "|allschools"); 
     viewData.Add("Classes", "|allclasses"); 

這也連接到包含實際的名單我用它來填充我的顯示頁面aspx.cs。

0

,如果你的問題是我有3個表和用戶選擇一個我怎麼能知道他選擇

回答其中之一: 你給所有三個相同名稱和值將改變取決於用戶選擇哪一個


如果您的問題是我華新臺幣與選擇的列表發送id

答:

服務器不會有關於HTML的任何信息屬性

只是name屬性映射到操作方法參數的名稱和它映射到參數值值,你可以不知道id的值和其他屬性在服務器

例子:

<input type="text" name="Title" id="SomeValue"/> 

將映射到:

public ActionResult Index(string Title) 

服務器將不recive ID = 「someValue中」

解決方案

你可以做的是地方的隱藏字段值的每個項目下你想

+0

感謝您的好評 - 但對我來說,我指定了每個列表的ID,它的檢索方式就是我更加關注的。我添加了一個我擁有的代碼示例,也許這將縮小思路。 – Masriyah 2011-05-09 19:57:21

0

而不是這種方式,在連接後這樣做

viewdata["viewList"] = storeList.Concat(productList).ToList(); 
012在下拉個

和視圖顯示項目這樣

<%= Html.DropDownList("viewlist_id", (List<SelectListItem>)ViewData["viewlist"])%> 

現在使用一個提交按鈕(如果要發佈的數據,如果重定向到不同的行動,否則相同的動作使用ActionLink的與routvalues,我在這裏使用的提交按鈕)

<input type="submit" name="submit" value="submit" /> 

,並在你的行動,你可以檢索發佈數據

var dropdown_id = Request.Form["viewlist_id"]; 

該W你會得到所選下拉的ID。謝謝

+0

非常感謝!我會放棄一下,看看它會如何運作,並會讓你知道。謝謝 – Masriyah 2011-05-10 12:31:38

+0

所以我試過這個,但我有這個小問題。我在我的Controller.cs文件中形成我的列表,並且我無法真正插入超鏈接來顯示 - 我在視圖.aspx頁面中執行此操作。你會碰巧知道一種解決辦法嗎?太感謝了。 – Masriyah 2011-05-10 13:18:53

0

所以我想出瞭如何將不同列表的值組合成一個下拉列表,仍然能夠訪問其實際值或ID沒有concat或union - 代碼是很多,如果任何人有興趣,我會去提前並花時間妥善發佈。除此之外,謝謝大家提供您的建議和幫助。謝謝