Передача параметра в действие контроллера из Html.Actionlink панели

что-то не так с этим html? Я хочу иметь ссылку в masterpage для перехода к представлению "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 ответов


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

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 Панели. Как вы можете видеть нет string, string, string, object перегрузка, которую вы пытаетесь использовать.


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

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

дополнение к принятому ответу:

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

 @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" })