MVC Razor - Ошибка с ActionLink в сетке - PullRequest
1 голос
/ 20 января 2012

Я использую MVC - Razor - я новичок в этом, и у меня возникли некоторые проблемы при создании ActionLink в сетке ...

 @grid.GetHtml(
            //Some grid setting stuff here
            columns: grid.Columns(
                grid.Column(null, null,
                    @<div class="vehicleResult">

                            @{ 
                                var text = string.Format("{0} {1} {2}", item.Value.GetPropertyValue("Manufacturer"), item.Value.GetPropertyValue("Shell Shape"), item.Value.GetPropertyValue("Model"));
                                @Html.ActionLink(text, MVC.Search.ActionNames.VehicleView, MVC.Search.Name, new { Id = item.Id }, new { });
                            }

                        <a>@string.Format("{0} {1} {2}", item.Value.GetPropertyValue("Manufacturer"), item.Value.GetPropertyValue("Shell Shape"), item.Value.GetPropertyValue("Model"))</a>
              )))

Тег в конце работает нормально, но я хочу текст из тега , т.е.

@string.Format("{0} {1} {2}", item.Value.GetPropertyValue("Manufacturer"), item.Value.GetPropertyValue("Shell Shape"), item.Value.GetPropertyValue("Model"))

отправлено на ActionLink (бит выше).

Также, если я сделаю ...

 var text = "blah";
 @Html.ActionLink(text, MVC.Search.ActionNames.VehicleView, MVC.Search.Name, new { Id = item.Id }, new { });

тогда это нормально - просто когда они вместе, это не работает ... ошибка, которую я получаю ...

System.Web.Mvc.HtmlHelper<GIT.RetailWebsite.App.ViewModels.VehicleSearchModel> 
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.    
d:\TFSProjects\Retail Website\Main\src\Retail Website\GIT.RetailWebsite.App\Views\Search\_grsResultsGrid.cshtml 31  GIT.RetailWebsite.App

Может кто-нибудь помочь, пожалуйста?

1 Ответ

3 голосов
/ 21 января 2012

Исключение вызвано тем, что вы пытаетесь использовать переменную dynamic text в методе расширения (ActionLink) и динамические аргументы не поддерживаются при вызове методов расширения. Переменная text равна dynamic, потому что она создана из аргумента dynamic item.

Хотя сообщение об исключении немного загадочно, оно описывает, что вы можете сделать:

Приведите диманический аргумент:

@Html.ActionLink((string)text, 
     MVC.Search.ActionNames.VehicleView, 
     MVC.Search.Name, new { Id = item.Id }, new { });

Или вызвать метод расширения как статический метод:

@LinkExtensions.ActionLink(Html, text, 
     MVC.Search.ActionNames.VehicleView, 
     MVC.Search.Name, new { Id = item.Id }, new { });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...