控制器操作未从视图接收参数
Controller action not receiving parameter from view
我正在用 C# ASP.NET MVC 开发一个小项目。我的问题是我有一个视图,它向用户显示一个包含所有库存的 table。 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);
}
我已经在网上搜索了小教程,他们总是执行这种操作,但是我的不起作用。你知道我错过了什么吗?
在不知道您是如何设置路线的情况下,无法判断 - 但我敢打赌您没有更改默认路线。如果是这种情况,您可以通过将 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 感兴趣,这对于在创建链接时避免拼写错误非常有用。
我正在用 C# ASP.NET MVC 开发一个小项目。我的问题是我有一个视图,它向用户显示一个包含所有库存的 table。 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);
}
我已经在网上搜索了小教程,他们总是执行这种操作,但是我的不起作用。你知道我错过了什么吗?
在不知道您是如何设置路线的情况下,无法判断 - 但我敢打赌您没有更改默认路线。如果是这种情况,您可以通过将 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 感兴趣,这对于在创建链接时避免拼写错误非常有用。