#c# #asp.net-core #razor #asp.net-core-razor-pages
#c# #asp.net-ядро #razor #asp.net-core-razor-pages
Вопрос:
Я использую новые страницы .NET Core Razor. Если у меня несколько кнопок, как мне получить значение каждой кнопки?
Пример на моих страницах razor у меня есть 2 кнопки:
<form method="post">
<button type="submit" value="2020" id="btn1">2020</button>
<button type="submit" value="2019" id="btn2">2019</button>
</form>
и в моем коде за:
public void OnPost()
{
// How to get btn1 value (2020) and btn2 value (2019) here?
}
Комментарии:
1. Со стороны сервера вы можете получить только значение кнопки, которая использовалась для отправки формы. Если вам нужны другие передаваемые значения, я предлагаю поместить их в скрытые переменные в той же форме.
Ответ №1:
Как сказал Джон, вы можете получить только значение кнопки, которая использовалась для отправки формы. Если вы хотите опубликовать обе кнопки, поместите их в скрытые переменные — это хороший подход.
Примечания: asp.net система привязки базовой модели будет привязывать значение по имени в элементе html, а не по идентификатору.
Один из способов — вручную добавить эти входные данные:
<form method="post">
<input hidden value="2020" name="btn1"/>
<input hidden value="2019" name="btn2"/>
<button type="submit" value="2020" id="btn1">2020</button>
<button type="submit" value="2019" id="btn2">2019</button>
</form>
Другой способ — использовать jquery для автоматического добавления входных данных:
<form method="post">
<button type="submit" value="2020" id="btn1">2020</button>
<button type="submit" value="2019" id="btn2">2019</button>
</form>
@section Scripts
{
<script>
$("form").submit(function () {
$("button[type=submit]").each(function (i) {
i ;
var value = $(this).val();
var input = $("<input>")
.attr("type", "hidden")
.attr("name", "btn" i).val(value);
$('form').append(input);
});
});
</script>
}
Серверная часть:
public void OnPost(int btn1,int btn2)
{
//do your stuff...
}