2014-06-13 97 views
4

我想通過使用HTML.ActionLink點擊我的視圖,通過我的視圖中的值傳遞給我的控制器。例如,如果我點擊'足球',那麼我希望'足球'的值被傳遞給控制器​​,然後控制器會改變顯示內容。目前,當我點擊運動名稱時什麼也沒有發生,當我調試項目時,控制器中的運動名稱參數爲空,這意味着該值尚未傳遞給控制器​​。Html.ActionLink沒有通過價值

這是從視圖的代碼:

  @foreach (var item in Model.Sports) 
    { 
     <p> 
      @*@Html.ActionLink(@item, "Index", "Home")*@ 
      @Html.ActionLink(@item, "Index", "Home") 

     </p> 
    } 


</div> 
<div class="col-md-4"> 
@foreach (var Coupon in Model.CurrentCoupons()) 
{ 
    <p> 
     Coupon: @Coupon.CouponName <br /> 
     Event Count: @Coupon.EventsCollection.Count 
     <br /> 
     Event: 
     @foreach (var Event in Coupon.EventsCollection) 
     { 
      @Event.Name;<br /><br /> 
     } 

     @foreach (var Market in Coupon.MarketList) 
     { 
      @Html.ActionLink(@Market.Name, "Index", "Home")<br /> 
     } 
    </p> 

    <table>  
     @foreach (var Selection in Coupon.SelectionList) 
     { 
      <tr> 
       <td width="400">@Selection.Name</td> 
       <td>@Selection.PriceFixed</td> 
      </tr> 
     }   
    </table> 
} 

控制器:

public class HomeController : Controller 
{ 
    public ActionResult Index(string sportName) 
    { 
     ViewBag.Title = sportName; 
     return View(new TestDataHelper(sportName)); 
    } 
} 

回答

3

一個重載的@ Html.ActionLink方法利用一個對象的路由價值,所以你也可以發送該值做類似的事情:

@Html.ActionLink("Soccer", "Index", "Home", new {sportName = @item}, null) 
2

如果作爲默認情況下,路由被指定如下:

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

然後,你需要命名參數id

public ActionResult Index(string id) 
{ 
    ViewBag.Title = id; 
    return View(new TestDataHelper(id)); 
}