2012-12-17 35 views
3

我在做我的作業,我正在開發asp.net MVC 3中的購物網站,目前我只在視圖中完成我的工作。我有一個產品頁面,點擊詳細信息,我必須打開產品詳細信息頁面。在.cshtml頁面發送和接收數據

<a href="ProductDetails.cshtml"> Details </a> 

我有多個產品,我想告訴我的產品詳細信息頁面打開了哪些產品詳細信息。一種方法是這樣的,我可以附加標識與URL像

<a href="ProductDetails.cshtml?id=1"> Details </a> 

但我無法理解我怎麼能接受此標識的商品詳細頁上,因爲我沒有控制,沒有模式,我使用緊湊獲取數據數據庫使用服務器端代碼在.cshtm頁面上。

+3

您使用MVC和你不有M還是C? –

+0

是的,因爲我是一名學生,按部件工作,所以我沒有M或C.在M或C上,我的演講將於明天舉行:) – Billz

+0

您似乎缺少ASP.NET MVC的一些基本思想。你可能想嘗試一些教程: http://www.asp.net/mvc/tutorials 我想這會澄清你的問題。 – Pete

回答

9

您可以訪問使用Request.QueryString["key"]查詢字符串。所以,我想你會想使用這樣的:

@{ 
    var myProductId = Request.QueryString["id"]; 
} 

警告:當然這將是一個不好的做法,通常MVC模式要求您拉的ID在你的控制器的動作,獲取模型數據,然後將該模型數據返回到視圖。視圖應儘可能少地瞭解查詢字符串和任何程序邏輯等內容。

public class ProductController : Controller 
{ 
    public ActionResult ProductDetails(string id) 
    { 
     MyProduct model = SomeDataSource.LoadByID(id); 
     return View(model); 
    } 
} 
2

您可以通過Request對象訪問:

@Request.Params["id"] 
2

沒有人提到,你可能想改變你的鏈接:

<a href="ProductDetails.cshtml?id=1"> Details </a> 

喜歡的東西:

<a href="@Url.Action("ProductDetails", "Product", new {@id = 1})" >Details</a> 
0
<div class="box-button">@Html.ActionLink("Details", "Course", new { id = item.id }, new { @class = "btn btn-default" })</div>