模型不包含'input'的定义

时间:2015-01-09 16:08:31

标签: c# model-view-controller asp.net-mvc-5

我试图从视图中获取用户在文本框中输入的内容,并将其添加到模型中的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并将我从此输入获得的数据显示到表中。

我觉得这很简单我错过了,但我没有看到它。

1 个答案:

答案 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);
}