Saya telah membuat metode di HomeController saya yang disebut Media yang menerima nomor, menurut nomor ini aplikasi saya membuat jumlah input "n". Masalah yang saya miliki adalah saya harus mendapatkan nilai jumlah input "n" untuk menghitung rata-rata aritmatika dari angka yang dimasukkan. Ini HomeController saya:

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();
        }
    }
}

Dan ini cshtml saya:

@{
    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)

Ini hasil saya:

This is my result

Apakah Anda tahu cara untuk mengakses nilai-nilai itu? Bantuan apa pun sangat kami hargai.

0
Antonio 25 Oktober 2019, 18:25

1 menjawab

Jawaban Terbaik

Ada beberapa kemungkinan. Salah satunya adalah menggunakan JavaScript untuk membaca semua nilai:

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>

Cara lain adalah menyimpan beberapa referensi ke dalam formulir dan proses di backend:

@{
    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>

Pengontrol:

 [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()];
     }
 }
1
Marcelo Vismari 25 Oktober 2019, 16:40