【发布时间】:2026-01-05 03:40:01
【问题描述】:
我遇到了标题所示的错误。我试图寻找解决方案,但我得到的只是关于使用try catch 代码块的解决方案。
我一直在使用我制作的课程文档来指导我做这个项目,但是我这次遇到的错误,我不知道哪个部分出了问题以及如何检查错误的部分。
我用// strange cmets 评论了两部分,这意味着我不知道错误发生在哪里或类似的地方。
感谢您阅读我的问题。
这是我的 PetRescued 模型
public class PetRescued
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public string PetName { get; set; }
public int PetAge { get; set; }
[Required]
[StringLength(6)]
public string PetGender { get; set; }
public short PetWeightInKg { get; set; }
public DateTime DateWhenRescued { get; set; }
public PetSpecies PetSpecies { get; set; }
public byte PetSpeciesId { get; set; }
}
这是我的 PetRescued 控制器
public ActionResult New() //populate form
{
var petspecies = _context.PetSpecieses.ToList();
var viewModel = new PetRescuedViewModel
{
PetSpecies = petspecies
};
return View("PetRescued", viewModel);
}
[HttpPost]
public ActionResult Save(PetRescued petRescued)
{
if (petRescued.Id == 0)
_context.PetRescueds.Add(petRescued);
else
{
var petRescuedInDb = _context.PetRescueds.Single(c => c.Id == petRescued.Id);
petRescuedInDb.PetName = petRescued.PetName;
petRescuedInDb.PetAge = petRescued.PetAge;
petRescuedInDb.PetGender = petRescued.PetGender;
petRescuedInDb.PetWeightInKg = petRescued.PetWeightInKg;
petRescuedInDb.PetSpeciesId = petRescued.PetSpeciesId; //strange
petRescuedInDb.DateWhenRescued = petRescued.DateWhenRescued;
}
_context.SaveChanges();
return RedirectToAction("Index", "PetRescued");
}
这是我的 PetRescued ViewModel
public class PetRescuedViewModel
{
public IEnumerable<PetSpecies> PetSpecies { get; set; }
public PetRescued PetRescueds { get; set; }
public PetRescuedViewModel()
{
PetRescueds = new PetRescued();
}
}
这是我的 PetRescued 表格
@using (Html.BeginForm("Save", "PetRescued"))
{
<div class="form-group">
@Html.LabelFor(m => m.PetRescueds.PetName)
@Html.TextBoxFor(m => m.PetRescueds.PetName, new { @class = "form-control" })
</div>
//strange
<div class="form-group">
@Html.LabelFor(m => m.PetSpecies)
@Html.DropDownListFor(m => m.PetRescueds.PetSpeciesId, new SelectList(Model.PetSpecies, "Id", "SpeciesName"), "Select A Species", new {@class = "form-control"})
</div>
<div class="form-group">
@Html.LabelFor(m => m.PetRescueds.PetAge)
@Html.TextBoxFor(m => m.PetRescueds.PetAge, new { @class = "form-control" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.PetRescueds.PetGender)
@Html.TextBoxFor(m => m.PetRescueds.PetGender, new { @class = "form-control" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.PetRescueds.PetWeightInKg)
@Html.TextBoxFor(m => m.PetRescueds.PetWeightInKg, new { @class = "form-control" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.PetRescueds.DateWhenRescued)
@Html.TextBoxFor(m => m.PetRescueds.DateWhenRescued, "{0:d MMM yyyy}", new { @class = "form-control" })
</div>
@Html.HiddenFor(m => m.PetRescueds.Id)
<button type="submit" class="btn btn-primary">Save</button>
}
【问题讨论】:
-
我没有看到你的
//strangecmets。 -
它们在 PetRescued Controller "petRescuedInDb.PetSpeciesId = petRescued.PetSpeciesId" 和 PetRescued Form "DropDownList" 语句中。
-
对不起。我完全错过了!
-
有多个问题和答案涵盖了您遇到的错误。你审查过其中任何一个吗?例如,this question 有一些答案可以显示如何查看实际的验证错误,这通常是最有帮助的更改。
-
您视图中的模型是
PetRescuedViewModel,因此 POST 方法中的参数必须是PetRescuedViewModel,而不是PetRescued,正如我在您之前的问题中指出的那样(同样 - 视图模型不包含数据模型!)
标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5