我无法在我的控制器MVC中获得文本框的值

时间:2014-05-02 16:23:24

标签: c# asp.net-mvc

* 您好我很长时间尝试它并且我没有得到任何结果,我的问题是下一个:  在我的控制器上,我无法获得文本框的值,但如果我将表单和文本框放在循环中,我就会得到值。*

**这是我的看法:**

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

我的控制器:

 [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");
            }

}

1 个答案:

答案 0 :(得分:2)

你为什么不这么做?

根据视图模型创建视图, 并在视图中为视图模型的字段创建文本框,然后您可以轻松地从表单中获取所需的值。

而且,当您创建文本框时,它应该是@Html.TextBoxFor(....)

例如 视图模型

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

}

然后在控制器的HttpGet

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

在视图中

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

控制器的HttpPost

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