передача нескольких параметров в @html.actionlink()

Я использую actionlink для передачи параметра «код» контроллеру для элемента и получения сведений об этом элементе в новом представлении (на самом деле это контроллер, который вызывает 3 частичных представления)

Мне также нужно передать параметр «описание», но это просто значение, которое должно отображаться как в новом представлении и не используется в контроллере (я использую «код» для фильтрации записей базы данных).

@foreach (var item in Model.MyModel)
{
  <tr>
    <td>
      @Html.ActionLink(item.code, "Index", "ControlerName", new { pos = item.code.ToString(), desc = item.desc.ToString() }, null)
</td>

}

эта ссылка на действие дает мне URL /ControlerName?pos=code&desc=desc

Есть ли способ отправить параметр «desc», чтобы он не отображался в URL-адресе, а отображался только как в новом представлении?


person onedevteam.com    schedule 19.02.2014    source источник


Ответы (3)


Нет, Html.ActionLink существует только для создания URL-адреса и размещения его внутри тега привязки. Вы должны повторно заполнить значение desc из своего действия Index, когда оно будет выполнено.

person rossisdead    schedule 19.02.2014

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

В качестве альтернативы можно было бы сохранить ваше описание в «таблице поиска», которую вы можете идентифицировать по id, поэтому вам нужно только передать id, а Controller's или ViewModel's будет отвечать за поиск.

@Html.ActionLink(item.code, "Index", "ControllerName", new { id=1 }, null)

Контроллер:

public ActionResult Index(int id) {
    // Go to DB and get the description by id.
}
person Dennis Rongo    schedule 19.02.2014
comment
Мой ответ был отмечен как ответ, но ваш ответ был лучшим! - person rossisdead; 20.02.2014

Используйте тег формы и передайте все параметры, которые вы хотите, в результат действия и верните любой другой результат действия (который будет содержать желаемый URL-адрес), который вы хотите.

бритва запрашивает ; при использовании (Html.BeginForm())

person user3311522    schedule 19.02.2014
comment
Я хотел бы услышать, как еще вы можете передать параметр, не включая его в URL-адрес! Поскольку вы проголосовали против, не могли бы вы ответить на него или оставить комментарий, чтобы уточнить причину? - person user3311522; 20.02.2014