Вопрос
я только начинаю использовать 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}