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
。
这里有什么问题? Controller
或View
?