我试图从视图中获取用户在文本框中输入的内容,并将其添加到模型中的String中。我得到的错误是: ' System.Collections.Generic.IEnumerable'不包含'输入'的定义
和
没有扩展方法'输入'接受类型为'System.Collections.Generic.IEnumerable'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)
在我的观点中:
@using (Html.BeginForm("Summary", "inquire", FormMethod.Post))
{
@Html.TextBoxFor(model => model.input)
型号:
namespace myProj.Models
{
public class myModel
{
[RegularExpression("([1-9][0-9]*)")]
[StringLength(9, MinimumLength = 3)]
public string input { get; set;}
..
控制器:
public ActionResult Summary(String input)
{
..
if (Request.HttpMethod.ToLower().Equals("get"))
{
return View();
}
else
{
..
return View(model);
}
}
问题我在视图中使用TextBoxFor在视图中,如果我将@model myProj.Models.myModel放在顶部我可以让它工作,但是当我想要时我需要使用@model IEnumerable使用foreach并将我从此输入获得的数据显示到表中。
我觉得这很简单我错过了,但我没有看到它。
答案 0 :(得分:0)
如果您想要使用模型的多个实例,则必须在视图中对它们进行迭代,如下所示:
@model List<myProj.Models.myModel>
然后做:
for (int i = 0; i < Model.Count(); i++)
{
@Html.TextBoxFor(m => m[i].input)
}
我们需要更改您的ActionResult
来处理多个模型
请注意,您不必检查请求类型是否为HttpGet
,请将其拆分为两种方法
[HttpGet]
public ActionResult Summary()
{
return View(new List<myProj.Models.myModel>());
}
[HttpPost]
public ActionResult Summary(List<myProj.Models.myModel> input)
{
return View(input);
}