* 您好我很长时间尝试它并且我没有得到任何结果,我的问题是下一个: 在我的控制器上,我无法获得文本框的值,但如果我将表单和文本框放在循环中,我就会得到值。*
**这是我的看法:**
@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");
}
}
答案 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
}