2014-06-13 3 views
4

HTML.ActionLink를 사용하여 내가 클릭 한 것을 기반으로 내 컨트롤러의 값을 내보기로 전달하려고합니다. 예를 들어 'Soccer'를 클릭하면 'Soccer'값이 컨트롤러로 전달되어 컨트롤러에 표시되는 값이 변경됩니다. 현재 스포츠 이름을 클릭해도 아무 일도 일어나지 않습니다. 프로젝트를 디버깅 할 때 컨트롤러의 스포츠 이름 매개 변수는 null입니다. 즉, 값이 컨트롤러로 전달되지 않았 음을 나타냅니다. 그런 다음Html.ActionLink가 값을 통과하지 않음

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

:

  @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

하나 routevalues에 대한 객체이기 때문에 다음과 같은 작업을 수행 할 때 그 값을 보낼 수도 있습니다.

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

을 지정, 경우는 다음과

뷰에서 코드입니다 매개 변수의 이름을 지정해야합니다. id :

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

이 같은 익명 형식 사용하여 컨트롤러에 매개 변수를 전달 할 수 있습니다

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

체크 아웃 여기 예 :에서 @ Html.ActionLink 방법은 소요의 오버로드 http://www.w3schools.com/aspnet/mvc_htmlhelpers.asp

+0

죄송합니다. @qbik, 내가 입력 한 것이고 s가 아닙니다. ee는 당신이 그것을 게시했다. 나는 너의 것을지지했다. – MDiesel

관련 문제