Я создал в своем HomeController метод под названием Media, который получает число, в соответствии с которым мое приложение создает "n" входов. Проблема, с которой я столкнулся, заключается в том, что я должен получить значения количества "n" входов для вычисления среднего арифметического введенных чисел. Это мой HomeController:
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Media.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
public ActionResult Media()
{
return View();
}
[HttpPost]
public ActionResult Media(int numero) {
String elements = null;
//elements= "<form action="Media" method='post'>";
for (int i = 1; i <= numero; i++) {
elements += "<input type= 'text' id='n"+i+"'"+"name='n"+ i + "'>" +""+"</input><br/>";
}
ViewBag.elements = elements + "<button id='btnCalcular'>Calcular media</button>";
//"<button type="submit" id="button" name="button" action="Media" >Enviar</button> </ form > ";
return View();
}
}
}
А это мой cshtml:
@{
ViewBag.Title = "Media";
}
<form action="Media" method="post">
<h2>Media de n números</h2>
Ingrese el número de elementos:<br />
<input type='text' id='numero' name='numero' />
<button type="submit" id="button" name="button" >Enviar</button>
</form>
@Html.Raw(ViewBag.elements)
Это мой результат:
Знаете ли вы, как получить доступ к этим значениям? Мы очень благодарны за любую помощь.
1 ответ
Есть несколько возможностей. Один из них - использовать JavaScript для чтения всех значений:
function getValues() {
const values = [...document.querySelectorAll('input')]
.filter(a => /^n[0-9]{1,}$/.test(a.getAttribute('id')))
.map(a => a.value)
.join(',');
console.log(values);
// TODO Make some operation like ajax
}
<input type="text" id="n1">
<input type="text" id="n2">
<input type="text" id="n3">
<button onclick="getValues()">Post</button>
Другой способ - сохранить некоторую ссылку в форме и обработать в бэкэнде:
@{
ViewBag.Title = "Media";
}
<form action="Media" method="post">
<h2>Media de n números</h2>
Ingrese el número de elementos:<br />
<input type='text' id='numero' name='numero' />
<button type="submit" id="button" name="button" >Enviar</button>
</form>
<form action="Test" method="post">
@Html.Raw(ViewBag.elements)
<!-- store amount of elements -->
<input type="hidden" name="myControl" value="@ViewBag.n" />
</form>
Контроллер:
[HttpPost]
public ActionResult Media(int numero) {
// (...)
ViewBag.n = numero;
// (...)
}
[HttpPost]
public ActionResult Test(int n) {
// Example of how read posted values
for (var i = 0; i < n; i++) {
var valueN = Request.Form["n" + i.ToString()];
}
}
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.