我正在开发一个ASP.NET MVC应用程序的问题。我在网络开发方面仍然相当新,特别是MVC,所以请原谅我这是一个非常愚蠢的新手错误; - )
我有一个显示产品列表的视图。每个产品都有一个“详细信息”链接,我想链接到该产品的详细信息视图。所以,这是视图中的相关标记:
<% foreach (var item in Model) { %>
<tr>
<td>
<%= Html.ActionLink("Edit", "Edit", new { id=item.StockCode.ToString() }) %>
<%= Html.ActionLink("Details", "Details", new { id=item.StockCode.ToString() })%>
</td>
<td>
<%= Html.Encode(item.StockCode) %>
</td>
<td>
<%= Html.Encode(item.Description) %>
</td>
</tr>
到目前为止一切顺利。当我将鼠标悬停在Web浏览器中的详细信息链接上时,该链接显示为:
R8517 是商品的股票代码。所以,这就是我希望在我的Action Method中看到的内容。这是行动方法:
//
// GET: /RawMaterial/Details/5
public ActionResult Details(string stockCode)
{
return View(repository.GetByStockCode(stockCode));
}
但是......当Action方法执行时,参数(stockCode)为空。
有什么想法吗?
答案 0 :(得分:4)
您需要接受的参数不应该是“stockCode”应该是“id”
MVC正在尝试将“id = item.StockCode.ToString()”绑定到名为相同的参数。你的行动方法应该是:
public ActionResult Details(string id)
答案 1 :(得分:1)
+1到DM的答案,但你也有另一种选择。您可以为您的案例注册特殊路线。像这样:
routes.MapRoute("RawMaterial", "RawMaterial/{action}/{stockCode}",
new { controller = "RawMaterial", action = "Index" } );