Как получить значение из пользовательского атрибута кнопки в ASP.NET MVC - PullRequest
0 голосов
/ 17 ноября 2011

скажем, например, у меня есть следующая кнопка в форме в приложении asp.net mvc 3:

<input type="submit" name="command" value="Click me" data-custom="D" />

Я знаю, как получить значение с кнопки ... однако получить ли значение datar-custom-атрибут в методе действия? Большое спасибо !!

Edit:

Должен заметить, что я вообще не могу использовать javascript, поскольку это мобильная версия сайта для устройств, которые не поддерживают javascript.

Ответы [ 4 ]

2 голосов
/ 17 ноября 2011

как получить значение атрибута data-custom в методе действия?

Нет, не знаете.В спецификации HTML нет ничего, что указывало бы на то, что атрибуты data- * должны отправляться на сервер при отправке формы.Поэтому, если вы хотите получить это значение, вам нужно использовать javascript.Один из методов заключается в том, чтобы подписаться на событие отправки формы, а затем автоматически вставить в эту форму скрытое поле, которое будет заполнено из атрибута data- * кнопки отправки.Таким образом, значение будет отправлено на сервер.

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

<button type="submit" name="btn" value="S">Save</button>
<button type="submit" name="btn" value="D">Delete</button>
...

и затем заставить действие вашего контроллера принять аргумент под названием btn.

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

0 голосов
/ 17 ноября 2011

Только значение и имя элемента формы публикуются в пределах form, и любой data-* не может быть передан.

Обойти это можно, используя JavaScript.Идея состоит в том, чтобы как-то объединить значение data-custom с вашим атрибутом value.

$("input[type=textbox][data-custom]").each(function(index, value) {
   $(value).attr("value", $(value).attr("value") + "$$$" + $(value).attr("data-custom"));
});

А из вашего метода действий используйте data.split("$$$")[1], чтобы получить data-custom.

Надеюсь, это поможет

0 голосов
/ 17 ноября 2011

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

0 голосов
/ 17 ноября 2011

Пользовательский атрибут не передается через get или post; только значения.

Вы можете получить значение пользовательского атрибута со стороны клиента (например, с помощью функции jQuery .attr ()) и добавить его к данным формы перед его отправкой.

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