I am trying to pass through a value from my view to my controller based on what I click on, using HTML.ActionLink. For example, if I click on 'Soccer' then I want the value 'Soccer' to be passed to the controller, which will then change what is being displayed. Currently when I click on the sport name nothing happens, and when I debug the project, the sport name parameter in the controller is null, which means that the value has not been passed to the controller.
This is the code from the view:
@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>
}
Controller:
public class HomeController : Controller
{
public ActionResult Index(string sportName)
{
ViewBag.Title = sportName;
return View(new TestDataHelper(sportName));
}
}
One of the overloads for the @Html.ActionLink method takes an object for routevalues, so you could also send that value in doing something like:
@Html.ActionLink("Soccer", "Index", "Home", new {sportName = @item}, null)
you can pass the parameter to the controller using an anonymous type like this:
@Html.ActionLink(@item, "Index", "Home", new { sportName = item })
check out the examples here: http://www.w3schools.com/aspnet/mvc_htmlhelpers.asp
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With