MVC2: как я могу прочитать управляющие значения для ссылки действия?

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

<input Name="MyInput" />

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

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

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


person Mike Pateras    schedule 08.01.2010    source источник
comment
Все, что вы делаете, будет неуклюжим. Я бы сказал, либо сделайте сообщение, либо создайте ViewModel для этого представления. Это не плохой путь.   -  person Nick DeVore    schedule 09.01.2010
comment
Что может повлечь за собой обратная почта?   -  person Mike Pateras    schedule 09.01.2010


Ответы (2)


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

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

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

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

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

person Eilon    schedule 09.01.2010

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

person Mike Pateras    schedule 09.01.2010