Html.ActionLink(): новое {значение маршрута} ведет себя странно. Я не знаю, откуда берется параметр length = 17

У меня есть эта ссылка на странице

<% = Html.ActionLink(item.Title, "Edit", "ArticleManagement", 
                      new { id = item.ArticleDataID })%>

и простой способ получить идентификатор статьи

public ActionResult Edit(int id)
{
  //Do something
}

К сожалению, я получаю сообщение об ошибке "словарь параметров содержит нулевое значение для идентификатора параметра int32 для Edit(Int32)..."

Когда я проверяю URL-адрес, я вижу что-то вроде "http://localhost:59786/ArticleManagement/Edit?Length=17"

Что такое "Длина=17"? и что там делается? Во всяком случае, пока я работаю с коллекцией, в которой всего 3 предмета.

Спасибо за помощь


person Richard77    schedule 19.07.2010    source источник


Ответы (2)


Вам нужно добавить null в качестве последнего параметра:

<%=Html.ActionLink("Title", "Edit", "ArticleManagement", 
        new { id = 1 }, new { @class = "link-class", attr = "attribute value" })%>

Я думаю, что он использует ваши значения маршрута как атрибуты html без нуля.

person Castrohenge    schedule 19.07.2010
comment
Теперь это имеет смысл. Теперь работает. Итак, если я хочу использовать как значения маршрута, так и атрибуты html, как мне это сделать? - person Richard77; 19.07.2010

У меня это тоже случалось, кажется, это происходит, когда ссылка действия не может соответствовать маршруту.

Длина 17 соответствует длине статьи управления.

Изменить: это может быть связано с перегрузкой ActionLink.

person Simon Hazelton    schedule 19.07.2010