Значение кнопки не отправляется в контроллер при отправке формы? - PullRequest
0 голосов
/ 29 февраля 2012

В моем представлении есть два тега <input type="image">, и они находятся внутри формы.В моем контроллере значение этих двух <input type="image"> всегда отображается как «ноль».Ранее, с <input type="submit">, значения были отправлены в контроллер. Теперь их нет. Может кто-нибудь сказать мне, как получить доступ к этим значениям в контроллере?

Просмотр:

@using (Html.BeginForm("Load", "Consent"))
{

//some code

<div id="button1" style="right:150px; width:90px; bottom :15px;position:absolute"><input type="image" src="../../img/ButtonBack.png" name="button" value="Previous" id="back" /></div>
<div id="button2" style="right:20px; width:90px; bottom :15px; position:absolute"><input type="image" src="../../img/ButtonNext.png" name="button" value="Acknowledge" id="ack" /></div>
</div>
}

Форма отправляется на контроллер, но значение string button равно 'null'

Контроллер:

[HttpPost]
        public ActionResult Load(bool? chk_acknowledge, string button)
        {
           // some code
        }

Ответы [ 3 ]

1 голос
/ 29 февраля 2012

Браузер не обязан публиковать значение атрибута «value», поэтому не полагайтесь на него. Значение предназначено для полей ввода радио и флажка: http://www.w3.org/TR/html401/interact/forms.html#edef-INPUT

Однако браузеры публикуют два других поля формы: имя .x и имя .y. Вместо этого вы могли бы назвать две кнопки с изображениями «nextButton» и «prevButton». В своем действии проверьте, содержит ли Request.Form «nextButton.x». Если он существует, была нажата кнопка nextButton. Аналогично, если существует «prevButton.x», была нажата кнопка prevButton.

0 голосов
/ 29 февраля 2012

Цитата из спецификации :

Когда для нажатия на изображение используется указывающее устройство, форма отправляется, а координаты щелчка передаются на сервер.Значение x измеряется в пикселях слева от изображения, а значение y - в пикселях сверху изображения.Представленные данные включают name.x = x-value и name.y = y-value, где «name» - это значение атрибута name, а x-value и y-value - значения координат x и y соответственно.

Итак:

@using (Html.BeginForm("Load", "Consent"))
{
    ... some code

    <input type="image" src="@Url.Content("~/img/ButtonBack.png")" name="Previous" />
    <input type="image" src="@Url.Content("~/img/ButtonNext.png")" name="Acknowledge" />
}

, а затем:

[HttpPost]
public ActionResult Load(bool? chk_acknowledge)
{
    if (!string.IsNullOrEmpty(Request["previous.x"]))
    {
        // the Previous image button was clicked
    }
    else if (!string.IsNullOrEmpty(Request["acknowledge.x"]))
    {
        // the Acknowledge image button was clicked
    }

    ...
}
0 голосов
/ 29 февраля 2012

Будет опубликовано только значение нажатой кнопки изображения (только нажатая кнопка отправки). Имея 2 кнопки с изображениями внутри формы, если есть еще одна кнопка отправки, и вы нажимаете на нее, кнопки с изображениями не будут опубликованы.

Например: вы нажимаете первую кнопку изображения внутри div # button1 - в массиве записей будет [button] => Previous, другая кнопка изображения не будет опубликована.

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