MVC2: Как я могу прочитать управляющие значения для ссылки на действие?
-
19-09-2019 - |
Вопрос
Я передаю некоторую информацию о моделе в перевод ActiveLink, но я также хотел бы предоставить действие значениями некоторых входов на странице. Например, если у меня было что -то вроде этого:
<input Name="MyInput" />
<%: Html.ActionLink("MyAction", "MyController", Model.Value);
Я хотел бы, чтобы действие было осведомлена об обеих моделях. Обычно я использовал бы FormCollection, но в этом случае я не могу, потому что не делаю представление.
Итак, как я могу передать значение MyInput в MyAction? Придется ли я добавить свойство под названием MyInput в мою модель? Предполагая, что это сработает, есть ли более простой способ или, по крайней мере, тот, который не включает в себя изменение модели?
Решение
В HTML нет способа сделать это, поэтому нет способа сделать это в ASP.NET MVC.
Есть два возможных решения, которые вы можете выбрать:
Используйте JavaScript так, чтобы, когда пользователь редактирует текстовое поле, вы динамически изменяете значение тега Anchor, чтобы включить то, в чем он набрал. Вы не можете использовать маршрутизацию ASP.NET для этого, потому что это работает на сервере, и вам нужен код клиента.
Сделайте форму, отправьте вместо ссылки. Это рекомендуемый способ в HTML. Когда пользователь отправляет данные, он должен быть в форме. Оберните все в тег формы и поместите там текстовое поле и кнопку. Установите действие формы, чтобы стать URL, который вы хотите, чтобы она опубликовала.
Это тот же ответ, что и я этот вопрос, хотя у запрашивателя другого вопроса, возможно, была немного другая идея.
Другие советы
Я определил, что, вероятно, мог прочитать значения текстового поля через JavaScript (я, вероятно, использовал бы jQuery) и пропустил их в качестве параметров как часть анонимного типа (вместо того, чтобы просто использовать model.value). Тем не менее, я решил переключиться с использования ссылки на действие на простое выполнение формы и использование формы. Это просто имело больше смысла со страницей, которую я строил.