Html.ActionLink value of ViewBag
Asked Answered
U

3

6

In ASP MVC C# I putted a List(Cars) in the ViewBag.cars, now I want to make an actionlink with the title of each car, like this:

@if (ViewBag.cars != null)
{
    foreach (var car in ViewBag.cars)
    {
         <h4>@Html.ActionLink(@car.title, "Detail", "Cars", new { id = @car.id }, new { @class = "more markered" })</h4>
    }
}

The error I get when I use @car.title or just car.title as value, I get this error:

CS1973: 'System.Web.Mvc.HtmlHelper<AutoProject.Models.CarDetails>' has no applicable method named 'ActionLink' but appears to have an extension method by that name.
 Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.

What should I fill in as first parameter of the Actionlink?

Underplot answered 9/1, 2014 at 16:43 Comment(0)
L
26

It's because car is dynamic, so it doesn't know what the appropriate extension method could be. If you cast title to string, and id to object, it'll be fine:

<h4>@Html.ActionLink((string) car.title, "Detail", "Cars", new { id = (object) car.id }, new { @class = "more markered" })</h4>

Your other option is to make a strongly typed ViewModel.

Landscape answered 9/1, 2014 at 16:47 Comment(0)
M
3

Try to assign your car.title to a variable first then use that variable

@if (ViewBag.cars != null)
{
     foreach (var car in ViewBag.cars)
     {
        string title = car.title.ToString();
        <h4>@Html.ActionLink(title, "Detail", "Cars", new { id = @car.id }, new { @class = "more markered" })</h4>
     }
}
Mcclimans answered 9/1, 2014 at 17:17 Comment(0)
N
0

Try this instead:

foreach (Car car in ViewBag.cars)
    {
    <h4>@Html.ActionLink(car.title, "Detail", "Cars", new { id = car.id }, new { @class = "more markered" })</h4>
}

ps I would also make your properties Uppercase rather than lower.

Novara answered 9/1, 2014 at 16:44 Comment(1)
Try the above instead, sorry missed the foreach outNovara

© 2022 - 2024 — McMap. All rights reserved.