Вопрос

я только начинаю использовать asp.net mvc .. так как я не знаком с ним, я просто хочу задать вопрос о хелпере html actionlink.

у меня есть этот код в моем домашнем представлении index.aspx ..

    <%  Dim _news As datatable = ViewData.Model%>
    <%  For count As Integer = 0 To _news.Rows.Count - 1%>
    <%  Dim id As Integer = _news.Rows(count).Item("IDnews")%>
    <%=_news.Rows(count).Item("newsTitle")%>
    <p>
    <%=_news.Rows(count).Item("newsContent")%><br />
    <%=Html.ActionLink("Read More..", "NewsPublic", "Administration", New With {id})%>
    </p>
    <%Next%>

если я нажму на ссылку действия, я ожидал, что она отобразит меня по этому URL: / Администрирование / NewsPublic / 7 скорее это дает мне этот URL: / Главная / NewsPublic? Длина = 14

actionlink передает id только в одном контроллере?

заранее спасибо!

Это было полезно?

Решение

По умолчанию Html.ActionLink будет использовать текущий контроллер. Но существует около десятка перегрузок ActionLink (), и существует несколько его версий, которые будут принимать параметр контроллера. Попробуйте:

Html.ActionLink("Read More...", 
                 "NewsPublic", 
                 "Administration",
                 New With { .id = id },
                 null)

Другие советы

Чтобы сделать ссылку на / Administration / NewsPublic / 7 , вы должны использовать

<%=Html.ActionLink("Read More..", "NewsPublic", "Administration", 
    New With {.id = 7}, Nothing)%>

Пятый параметр заставляет компилятор выбирать

ActionLink(string linkText, string actionName, string controllerName, 
    object routeValues, object htmlAttributes)

перегрузка метода расширения вместо

ActionLink(string linkText, string actionName, object routeValues, 
    object htmlAttributes)

И не забудьте добавить присвоение параметров

New With {.id = 7}

вместо

New With {.id}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top