为什么表单以Generic.List的形式提交?

时间:2018-04-10 07:15:16

标签: asp.net-mvc entity-framework razor

ASP.NET MVC。我有一个像这样的编辑View

@model MyApp.Models.Operator

@using (Html.BeginForm())
{
    <button type="submit" class="btn btn-success"><i class="fa fa-save"></i> Save</button>

    <br />

    <div>
        <div class="form-group row">
            <label for="opName" class="col-2 col-form-label">Name</label>
            <div class="col-4">
                <input class="form-control" type="text" id="opName" name="Name" value="@Model.Name" autoComplete="off" required="required" />
            </div>
        </div>

        <div class="form-group row">
            <label for="opPwd" class="col-2 col-form-label">Password</label>
            <div class="col-2">
                <input class="form-control" type="text" id="opPwd" name="Password" value="@Model.Password" autoComplete="off" required="required" />
            </div>
        </div>
    </div>
}

这里是Controller的GET和POST功能:

public async Task<ActionResult> Edit(int? id)
{
    if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

    try
    {
        Operator op = await _context.Operators.AsNoTracking().SingleAsync(x => x.Id == id);
        return View(op);
    }
    catch (Exception)
    {
        return HttpNotFound();
    }
}

[HttpPost]
public async Task<ActionResult> Edit(Operator op)
{
    if (ModelState.IsValid)
    {
        _context.Entry(op).State = EntityState.Modified;
        await _context.SaveChangesAsync();
        return View(await _context.Operators.ToListAsync());
    }
    return View(op);
}

最后是Operator模型:

namespace MyApp.Models
{
    public class Operator
    {
        public string Name { get; set; }
        public string Password { get; set; }
    }
}

但是在提交表单时我收到此错误(翻译自意大利语):

  

System.InvalidOperationException:传递到字典中的模型项的类型为'System.Collections.Generic.List`1 [MyApp.Models.Operator]',但此字典需要“MyApp.Models”类型的模型项。运算符”。

现在,错误很明显,但我不明白为什么会发生这种情况。 我只从我的数据库中选择一个记录(我不使用Where()),并且使用调试器我看到op变量确实包含Operator的单个实例类,它不是List

这里有什么问题? ControllerView

0 个答案:

没有答案