Что не так с моим маршрутом? - PullRequest
0 голосов
/ 25 мая 2011

Я получаю следующую ошибку, когда щелкаю ссылку «Редактировать» в представлении «Список».

Словарь параметров содержит пустую запись для параметра 'envId' не обнуляемого типа 'System.Int32' дляметод 'System.Web.Mvc.ActionResult Edit (Int32)' в 'WebUI.Controllers.EnvironmentsController'.Необязательный параметр должен быть ссылочным типом, обнуляемым типом или быть объявлен как необязательный параметр.Имя параметра: параметры

Вот мой код:

Summary.ascx
Маршруты
EnvКонтроллер, методы редактирования действий
Контроллер Env, метод списка действий
EnvRepository и SqlEnvRepository

1 Ответ

2 голосов
/ 25 мая 2011

Ваши автоматически сгенерированные ссылки говорят это:

<td><%= Html.ActionLink("Edit", "Edit", new { id= Model.EnvironmentID} )%></td>

, но код контроллера говорит это:

public ActionResult Edit(int envId)

Привязка модели MVC перехватывает параметры в действии по имени, имаршрут по умолчанию предполагает, что первым параметром будет int, называемый id.Измените имя параметра Edit() на id, и оно должно работать.

В качестве альтернативы вы можете изменить объект параметров ActionLink на new { envId = Model.EnvironmentID }, но это приведет к тому, что ваши URL будут выглядеть так:

http://localhost/Env/Edit?envId = 1

вместо этого:

http://localhost/Env/Edit/1
...