3

私は asp.net MVC 3 でショッピング サイトを開発している宿題をやっています。現在、ビューでのみ作業を行っています。製品ページがあり、詳細をクリックすると製品詳細ページを開く必要があります。

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

複数の商品があり、どの商品詳細が開かれたかを商品詳細ページに伝えたいです。1つの方法は、次のようなURLでIDを追加できることです

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

しかし、コントローラーもモデルもなく、サーバー側コードを使用して .cshtm ページのコンパクト データベースを使用してデータを取得しているため、製品詳細ページでこの ID を受け取る方法を理解できません。

4

4 に答える 4

10

を使用してクエリ文字列にアクセスできます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);
    }
}
于 2012-12-17T19:06:29.513 に答える
2

リンクを変更したいと思う人は誰もいません。

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

次のようなものに:

<a href="@Url.Action("ProductDetails", "Product", new {@id = 1})" >Details</a>
于 2012-12-22T02:37:53.567 に答える
2

Request オブジェクトを介してアクセスできます。

@Request.Params["id"]
于 2012-12-17T19:03:47.290 に答える
0
<div class="box-button">@Html.ActionLink("Details", "Course", new { id = item.id }, new { @class = "btn btn-default" })</div>
于 2016-02-15T17:47:15.787 に答える