我正在使用C#ASP.NET MVC开发一个小项目。我的问题是我有一个View,它向用户显示一张包含所有Stock的表格。 HTML代码如下所示:
<table border="1">
<tr>
<th>Item Id</th>
<th>Brand</th>
<th>Model</th>
<th>Unit Price (€)</th>
<th>Stand</th>
<th>Available Quantity</th>
<th>Operation</th>
</tr>
@foreach (StockViewModel stock in Model.Stock)
{
<tr>
<td>@stock.Item_Id</td>
<td>@stock.Brand</td>
<td>@stock.Model</td>
<td>@stock.Unit_Price</td>
<td>@stock.Stand_Id</td>
<td>@stock.Available_Quantity</td>
<td><a href="~/Stock/UpdateStock/@stock.Item_Id">Update</a> | Delete</td>
</tr>
}
</table>
问题是Item_Id的值在控制器中空着:
public ActionResult UpdateStock(string i)
{
StockViewModel stock = new StockViewModel();
stock.Item_Id = i;
return View("UpdateStock", stock);
}
我已经在互联网上搜索了小型教程,他们总是执行这种操作,但是我的工作不起作用。你知道我错过了吗?
答案 0 :(得分:0)
在不知道如何设置路线的情况下,我们无法分辨 - 但我愿意打赌您没有更改默认路线。如果是这种情况,您可以通过将UpdateStock(string i)
更改为UpdateStock(string id)
来解决此问题。
查看您的RouteConfig.cs并查看您的默认路线。它期望的参数名称为id
,并将自动将其绑定到操作上“/”后面的任何内容。如果您需要坚持使用变量i
,则可以执行以下操作:
<td><a href="~/Stock/UpdateStock?i=@stock.Item_Id">Update</a> | Delete</td>
除非您想要create a custom route,否则您必须为名为id
以外的其他参数构建查询字符串。
您可能也有兴趣研究Razor's ActionLink HTML Helper,这对于在创建链接时避免拼写错误非常有用。