2010-01-08 3 views
1

Я передаю некоторую информацию о модели в ActionLink, но я также хотел бы предоставить действие со значениями некоторых входов на странице. Например, если у меня было что-то вроде этого:MVC2: Как читать контрольные значения для ссылки действий?

<input Name="MyInput" /> 

<%: Html.ActionLink("MyAction", "MyController", Model.Value); 

я хотел бы действие, чтобы быть в курсе как Model.Value (который передается в соответствии с параметром) и значение MyInput. Обычно я бы использовал FormCollection, но я не могу в этом случае, так как я не делаю submit.

Как я могу передать значение MyInput в MyAction? Должен ли я добавить свойство MyInput в мою модель? Предполагая, что это сработает, есть ли более простой способ или, по крайней мере, тот, который не включает модификацию модели?

+1

Все, что вы делаете, будет cludgy. Я бы сказал, либо сделайте сообщение назад, либо создайте ViewModel для этого представления. Это неплохой путь. –

+0

Что бы сделать сообщение назад? –

ответ

3

В HTML нет возможности сделать это, поэтому в ASP.NET MVC нет способа сделать это.

Есть два возможных решения это, что вы можете выбрать:

  1. Использование JavaScript таким образом, что, когда пользователь редактирует текстовое поле динамически изменять значение тега привязки, чтобы включить то, что они ввели в. Вы не можете использовать маршрутизацию ASP.NET для этого, потому что это выполняется на сервере, и вам нужен код на стороне клиента.

  2. Сделайте форму submit вместо ссылки. Это рекомендуется в HTML. Когда пользователь отправляет данные, он должен быть в форме. Оберните все в тег формы и поместите текстовое поле и кнопку там. Установите действие формы как URL-адрес, для которого вы хотите отправить сообщение.

Это тот же ответ, как я положил в this question, хотя просящие другой вопрос, возможно, имел несколько иную идею.

1

Я определил, что, вероятно, мог бы прочитать значения текстового поля через Javascript (я, вероятно, использовал JQuery) и передал их как параметры как часть анонимного типа (вместо использования Model.Value). Тем не менее, я решил переключиться с использования ссылки действий на простое представление формы и использование FormCollection. Это только имело смысл со страницы, которую я строил.