Если вы используете @Model.PropertyName
, оно всегда будет отображать значение при запуске приложения, правильный способ - использовать js для получения значения.
Вот рабочая демонстрация, как показано ниже:
<form method="post">
<input asp-for="Value1" id="value1" />
<input asp-for="Value2" id="value2" />
<button type="submit" value="Search" id="clickme" onclick="Search()">Search</button>
</form>
@section Scripts
{
<script>
function Search() {
var val1 = $('#value1').val();
var val2 = $('#value2').val();
//do your stuff....
}
</script>
}
Не уверен, каков ваш сценарий, если вы просто хотите передать значение двух входов на бэкэнд, даже не нужно использовать js. Просто сохраните имя свойства и имя входа одинаковыми. на страницах razor он имеет атрибут BindProperty
для привязки данных:
Index.cs html:
@page
@model IndexModel
<form method="post">
<input asp-for="Value1" id="value1" />
<input asp-for="Value2" id="value2" />
<button type="submit" value="Search" id="clickme">Search</button>
</form>
Index.cs html .cs:
public class IndexModel : PageModel
{
[BindProperty]
public string Value1 { get; set; }
[BindProperty]
public string Value2 { get; set; }
public async Task<IActionResult> OnGet()
{
return Page();
}
public void OnPost()
{
//do your stuff
}
}
Результат:
введите описание изображения здесь
Или просто добавьте параметр, как показано ниже:
public void OnPost(string Value1,string Value2)
{
//do your stuff
}