2015-08-22 48 views
0

我正在C#ASP.NET MVC中开发一个小项目。我的问题是我有一个视图,向用户呈现所有股票的表格。 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

你的路线模式是怎样的? – MikeSW

+0

@MikeSW你指的是URL?对不起,我缺乏知识!如果是,则在我尝试更新第一个项目的情况下,它的格式为http:// localhost:64734/Stock/UpdateStock/1 –

回答

0

不知道你是如何建立你的路线,这是不可能告诉 - 但我敢打赌,你没有改变默认路线。如果是这样,您可以通过将UpdateStock(string i)更改为UpdateStock(string id)来解决此问题。

查看您的RouteConfig.cs并查看您的默认路由。它期望的参数名称是id,并且会自动将其绑定到动作后面的“/”后面。如果你需要坚持使用可变i,你可以做到以下几点:

<td><a href="~/Stock/[email protected]_Id">Update</a> | Delete</td> 

除非你想create a custom route,你必须建立一个名为比id其他任何参数的查询字符串。

您可能还有兴趣查看Razor's ActionLink HTML Helper,这对于避免在创建链接时出现拼写错误可能非常有用。

相关问题