Передача параметра в действие контроллера из Html.ActionLink - PullRequest
27 голосов
/ 28 ноября 2011

Что-то не так с этим html?Я хочу иметь ссылку на главной странице, чтобы перейти к представлению «CreateParts».У меня есть действие «CreateParts», у которого есть параметр parentPartId в контроллере «PartList».

<li id="taskAdminPartCreate" runat="server">
                                    <%= Html.ActionLink("Create New Part", "CreateParts", "PartList", new { parentPartId = 0 })%></li>

Мое действие контроллера похоже на

public ActionResult CreateParts(int parentPartId)
    {
        HSPartList objHSPart = new HSPartList();
        objHSPart.Id = parentPartId;
        return View(objHSPart);
    }

Когда я нажимаю «Создать новую деталь» в меню в SiteMaster, я получаю исключение.Пожалуйста, помогите мне в этом.

Ответы [ 3 ]

63 голосов
/ 28 ноября 2011

Вы используете неверную перегрузку. Вы должны использовать эту перегрузку

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    string controllerName,
    Object routeValues,
    Object htmlAttributes
) 

И правильный код будет

<%= Html.ActionLink("Create New Part", "CreateParts", "PartList", new { parentPartId = 0 }, null)%>

Обратите внимание, что дополнительный параметр в конце. Для других перегрузок посетите LinkExtensions.ActionLink Method . Как видите, перегрузка string, string, string, object, которую вы пытаетесь использовать, отсутствует.

10 голосов
/ 28 ноября 2011

Вы используете неправильную перегрузку ActionLink. Попробуйте это

<%= Html.ActionLink("Create New Part", "CreateParts", "PartList", new { parentPartId = 0 }, null)%>
9 голосов
/ 08 июля 2014

Добавление к принятому ответу:

, если вы собираетесь использовать

 @Html.ActionLink("LinkName", "ActionName", "ControllerName", new { @id = idValue, @secondParam= = 2 },null)

, это создаст actionlink, где вы не сможете создать новый пользовательский атрибут или стиль для ссылки.

Однако 4-й параметр в расширении ActionLink решит эту проблему.Используйте 4-й параметр для настройки по-своему.

 @Html.ActionLink("LinkName", "ActionName", "ControllerName", new { @id = idValue, @secondParam= = 2 }, new { @class = "btn btn-info", @target = "_blank" })
...