2012-04-29 145 views
0

我有這個表中的數據庫:如何從視圖值傳遞給控制器​​在ASP.NET MVC 3(剃刀)?

http://i.stack.imgur.com/C7CWX.png

而且我通過這段代碼(視圖)顯示無repitions在 '音樂' 的所有值:

@foreach (var item in Model.Select(m => m.music).Distinct()) 
{ 
    <tr> 
     <td> 
      @Html.ActionLink(item, "Deep", ViewData["item"]) 
     </td> 
    </tr> 
} 

結果:

Jazz 
Disko 
Rock 
Metal 

而且我想,當我按下「爵士」結果「數」,「柯克」等 怎麼辦呢? 我想我可以從查看到控制器傳遞價值,但我不知道怎麼在我的情況下做到這一點。 請幫我在控制器(例如)

操作:

public ActionResult Deep(string music) 
    { 

     var res = (from m in d.table where m.music == music select m); 
     return View(res); 
    } 

回答

0

您的ActionLink倒不做你想要什麼。如果你將鼠標懸停在生成的鏈接上,我認爲每個人都會命名一個不同的控制器!

http://msdn.microsoft.com/en-us/library/dd505070.aspx

代替看這個版本

http://msdn.microsoft.com/en-us/library/dd493066.aspx

@Html.ActionLink(item, "Deep", "YourController", new {id= ViewData["item"]}) 

和類似

public ActionResult Deep(int id) 
{ 
    //Do something 
} 
+0

它也不清楚什麼在你的可視數據,你可能需要新的{ID =項目}並在控制器深(字符串ID)字符串類型 – Andiih

+0

我做像你說的,但所有相同的我有錯誤。在控制器: var res =(從m在d.table其中m.music == id選擇m); :@ Html.ActionLink(item,「Deep」,「Home」,new {id = item})。我做錯了什麼?? – user

+0

那麼......控制器有什麼錯誤。編譯還是運行時?如果運行時,id等的值是什麼等 – Andiih

0

控制器操作是不可能的,從視圖到控制器傳遞值直。當用戶向您請求Web服務器時,初始頁面Web服務器(ASP.NET)會指出要調用的操作。該操作收集數據並將該數據(使用視圖模型,ViewBag,ViewData或TempData)發送到視圖進行渲染。在這種情況下渲染的過程,其中的數據轉換爲HTML(可以是任何東西真的CSS,JavaScript的,......在這個看起來的字節數組),這是發送給其解釋爲網頁客戶端(瀏覽器)。用戶看到你的鏈接,當他點擊它時,他會向Web服務器發出新的請求,並重復此過程。

您正在創建的鏈接代碼: @ Html.ActionLink(項目, 「深」,計算機[ 「項目」])

第一個參數產品鏈接文本。 「Deep」是在當前控制器上調用的動作的名稱。第三個參數是類型對象。第三個參數應該與Deep動作中的參數類型相同,並且您應該使用下一個表示法來傳遞數據

@ Html.ActionLink(item,「Deep」,new {idItem = item.IdMusic,foo =「巴」})

在前面的例子中的ASP MVC期待你的‘深’行動有參數idItem和Foo。

有一點要注意的是,客戶/用戶正在對Web服務器的請求,他不能像你試圖發送一個對象。而是發送對象的唯一標識符(idMusic),並根據數據庫/緩存/會話的請求檢索它。

希望這有助於 茲拉蒂博爾

+0

Thanx,但我不能使用你的例子=((( – user

相關問題