Maniraj.M Ответов: 1

Значение не может быть нулевым или пустым в actionlink


Привет,

Я новичок в MVC Design pattern. Я использую Entity Framework для получения записей и хочу отобразить эти записи в виде кнопки ссылки. Когда я использую тег я могу отображать запись, но когда я использую @Html.ActionLink, которое я получаю, не может быть нулевым или пустым. Код выглядит следующим образом,

Работающий:
@foreach (var items in Model)
{
@пунктам.название

}

не работать:
@foreach (var items in Model)
{
@формат HTML.Actionlink панели(@пунктам.наименование, "данные", "дом", новый объект { @пунктам.идентификатор})
}

заранее спасибо :-)

Что я уже пробовал:

Упомянутый выше код был мною опробован

1 Ответов

Рейтинг:
9

F-ES Sitecore

@Html.ActionLink(items.name, "Details", "Home", new { id = items.id }, null)


Вам нужно только " @ " продолжить что-то, когда вы хотите записать результат этого в html. Поэтому он нужен перед Html.ActionLink, но не с параметрами, поскольку вы передаете их как значения, а не записываете их непосредственно в html.

При передаче атрибутов вы используете так называемый анонимный тип (новый оператор { .. }), который должен иметь формат {propNameA = propValueA, propNameB = propbValueB}. Наконец, вам нужно использовать правильную перегрузку для ActionLink, которая делает то, что вы хотите. Тот, который вы хотите, имеет 5 параметров, последний из которых является любым HTML-атрибутом, который вы хотите получить по ссылке, но нам он не нужен, поэтому мы предоставляем "null" в качестве 5-го параметра. Если вы не предоставили этот ноль, то у вас есть только 4 параметра, и он использует другую перегрузку, где параметры означают разные вещи, и вы не получите то, что хотите. Это странная причуда MVC.


Maniraj.M

Я изменил код таким образом, но все равно получаю ту же ошибку! ;(
HTML.Actionlink панели(@пунктам.наименование, "данные", "дом", новый { ИД = @пунктам.идентификатор}, нуль);

F-ES Sitecore

Проверьте, что ни один из предметов.Имя, ни детали.идентификатор имеет значение null. Вы также все еще используете "@", когда вам это не нужно.

Maniraj.M

я изменил код, чтобы ,
if (! string.IsNullOrEmpty(items.name))
{
@формат HTML.Actionlink панели(товары.наименование, "данные", "дом", новый { идентификатор = элементы.идентификатор}, нуль)
}

теперь он работает нормально. Большое спасибо!