тип ввода = «диапазон» — отправка данных из представления на контроллер в ASP.NET

#c# #asp.net #model-view-controller

#c# #asp.net #модель-представление-контроллер

Вопрос:

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

Это слайдер в представлении:

             <tr>
                <th scope="row">1</th>
                <td>
                    <p>@Model.UserDeterminants[0].DeterminantName.Value</p>
                </td>
                <td>
                    <form asp-area="" asp-controller="Examine" asp-action="SubmitValue" asp-route-range="range1" asp-route-id="@Model.Id" value="points" method="post" class="rd-form">
                        <input type="range" defaultValue="0" name="range1" id="my_range1" min="-100" max="100" onload="updateSliderValue(this.value)" onchange="updateSliderValue(this.value)"/>
<p><span>0</span></p>
<button class="button button-block button-primary button-pipaluk" type="submit">Zatwierdź</button>
                    </form>
                </td>
                <td>
                    <p>@Model.UserDeterminants[1].DeterminantName.Value</p>
                </td>
            </tr>
  
     <script>
        $('#my_range1').on("change mousemove", function () {
            $(this).next().html($(this).val());
        });
    </script>
  

И контроллер:

         [HttpGet]
        public IActionResult SubmitValue (int range)
        {
...
        }
  

Комментарии:

1. Вы отправляете значение, поэтому оно должно быть [HttpPost] вместо [HttpGet]. Также вашим параметром действия в контроллере должен быть: public IActionResult SubmitValue ([From body] Диапазон имен таблиц)

Ответ №1:

Решаемая, спасибо @noobprogrammer. Я изменил [From body] на [FromForm] . Рабочее решение в поле зрения:

 <form asp-action="Submit" asp-route-range="range" asp-route-Id="@Model.Id" method="post">
  <input type="range" defaultValue="0" name="range" id="range1" min="-100" max="100" onload="updateSliderValue(this.value)" onchange="updateSliderValue(this.value)" />                        <p><span>0</span></p>
  <button class="button button-block button-primary button-pipaluk" type="submit">Zatwierdź</button>
</form>
  
 <script>
        $('#my_range1').on("change mousemove", function () {
            $(this).next().html($(this).val());
        });
    </script>
  

и в контроллере:

         [HttpPost]
        public IActionResult Submit ([FromForm] int range, int Id)
        {
...
        }