我正在做我的作业,我正在asp.net MVC 3中开发一个购物网站,目前我只是在视图中做我的工作。我有一个产品页面,点击详细信息,我必须打开产品详细信息页面。
<a href="ProductDetails.cshtml"> Details </a>
我有多个产品,我想告诉我的产品详情页面打开了哪些产品详细信息。一种方法是我可以使用像
这样的URL添加Id<a href="ProductDetails.cshtml?id=1"> Details </a>
但我无法理解如何在产品详细信息页面上收到此ID,因为我没有控制器,也没有模型,我使用服务器端代码在.cshtm页面上使用压缩数据库获取数据。
答案 0 :(得分:10)
您可以使用Request.QueryString["key"]
访问查询字符串。所以我想你会想要使用这样的东西:
@{
var myProductId = Request.QueryString["id"];
}
警告:当然这是一个不好的做法,通常MVC模式要求您在Controller的操作中提取ID,获取模型数据,并将模型数据返回给视图。 View应该尽可能少地了解查询字符串和任何程序逻辑等内容。
public class ProductController : Controller
{
public ActionResult ProductDetails(string id)
{
MyProduct model = SomeDataSource.LoadByID(id);
return View(model);
}
}
答案 1 :(得分:2)
您可以通过请求对象访问它:
@Request.Params["id"]
答案 2 :(得分:2)
没有人提到你可能想要改变你的链接:
<a href="ProductDetails.cshtml?id=1"> Details </a>
类似于:
<a href="@Url.Action("ProductDetails", "Product", new {@id = 1})" >Details</a>
答案 3 :(得分:0)
<div class="box-button">@Html.ActionLink("Details", "Course", new { id = item.id }, new { @class = "btn btn-default" })</div>