Могу ли я создать ActionLink через класс Helper? Как? - PullRequest
0 голосов
/ 22 октября 2009

Я использую вспомогательный класс для создания моей гиперссылки. Разметка выглядит так:

<a href='/controller/action?id=val'></a>

Это та же самая разметка, которую создает Html.ActionLink(). Однако, если я использую Html.ActionLink(), идентификатор принимается в качестве параметра в методе внутри контроллера. Если я просто сгенерирую тег a в строке, подобной приведенной выше, я получу сообщение об ошибке ниже при попытке определить метод с параметром id:

The parameters dictionary contains a null entry for parameter 'id' 
of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult' 
...

To make a parameter optional its type should be either a reference    
type or a Nullable type.
Parameter name: parameters
  1. Есть ли способ использовать Html.ActionLink() в моем классе помощника?
  2. Почему есть разница между двумя техниками?

Вот мое действие контроллера:

public ActionResult AssignmentAdd(int id)
{
   return View();
}

1 Ответ

2 голосов
/ 22 октября 2009

Похоже, у вас проблема с маршрутизацией. Я полагаю, что ваше действие контроллера должно быть изменено, чтобы принимать для параметра id целое число, равное нулю:

public ActionResult Action(int? id) 
{ }

Также, если вы следовали таблице маршрутизации по умолчанию, сгенерированной шаблоном, правильная ссылка для этого действия должна быть:

<a href="/controller/action/val"></a>

И помощник для его генерации:

<%= Html.ActionLink("link text", "action", new { id = "val" }) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...