简体   繁体   中英

I can not get the value of a textbox in my controller MVC

* Hello i have long time trying it and i dont get any results, my problem is the next: On my controller i can not get the value of the textbox, but if I put the form and the textbox out of the loop i get the value.*

** this is my view:**

@for (int r = 0; r <= Model.Count-1;r++)
{
    i = i + 1;

    <tr>

         @using (Html.BeginForm("Result","Ruta", new { ruta=Model [r].descrip ,ficha =Model [r].ficha }, FormMethod.Post))
         {
             if (i == 1)
             {
            @Html.TextBox("FechaInicio")

             }

        <td>
            @Html.DisplayFor(modelItem => Model[r].ruta)


        </td>
        <td>
            @Html.DisplayFor(modelItem => Model[r].descrip)
        </td>
        <td>
            @Html.DisplayFor(modelItem => Model[r].ficha)

        </td>

        <td>
        <input type="Submit" value="Consultar" style=" height :20px;  font-size:12px; "/>





        </td>

         }
    </tr>

My Controller:

 [HttpPost]
        public ActionResult Result(string ficha, string ruta)
        {

            Utility.Fecha1 = Request.Form ["FechaInicio"];
           if (string.IsNullOrEmpty(ficha) || string.IsNullOrEmpty(ruta) || string                      .IsNullOrEmpty ( Utility .Fecha1) )
            {
                return RedirectToAction("FichaConduces", "Ruta", new { ficha = ficha, ruta = ruta,fecha=Utility .Fecha1 });



            }
            else
            {
                return View("index");
            }

}

Why don't you do the simple way?

Create a view based on view model, and create textboxs for view model's field in view then you can easily get values you want from the form.

And, when you create textbox it should be @Html.TextBoxFor(....)

For example ViewModel

public class MyViewModel
{
   public string MyField1{get; set;}
   public string MyField2{get; set;}

}

Then in controller's HttpGet

[HttpGet]
public ActionResult MyControllerAction()
{
   var myViewModel = new MyViewModel();
   return View(myViewModel);
}

in view

@model MyViewModel
@using(Html.BeginForm("Action","Controller",FormMethod.Post))
{
   @Html.TextBoxFor(m=>m.MyField1)
   ....
}

controller's HttpPost

[HttpPost]
public ActionResult MyControllerAction(MyViewModel myViewModel)
{
  //do whatever you want
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM