jak*_*jak 15 c# razor asp.net-mvc-3
我有两个模型 - 类别和文章.我有两个相同的删除视图和控制器.唯一的区别是它适用于类别,但有文章我在HttpPost上得到空模型.
分类:
public ActionResult DeleteCat(int id)
{
Category cat = db.CategoryByID(id);
if (cat != null)
{
return View(cat);
}
return RedirectToAction("Index");
}
[HttpPost]
public ActionResult DeleteCat(Category model)
{
db.DeleteCategory(model.CategoryID);
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
文章:
public ActionResult Delete(int id)
{
Article art = db.ArticleByID(id);
if (art != null)
{
return View(art);
}
return RedirectToAction("Index");
}
[HttpPost]
public ActionResult Delete(Article model)
{
db.DeleteArticle(model.ArticleID);
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
这两个视图都是由Visual Studio生成的,我没有更改它们.当我想删除一个类别时,一切顺利.但是当我想要删除一篇文章时,它首先从数据库中正确选择,然后显示视图(一切正常)但是当我单击删除按钮时模型为空(所有属性都是0,null或false)和所以db.DeleteArticle抛出一个异常(没有ArticleID = 0的文章).谁能请我提供任何关于我应该检查什么或者我应该如何解决这个问题的提示?
小智 17
如果[HttpPost] Action中模型的参数与模型中的属性名称相同,则它将为null,并且将无法验证该字段是否无效.
例:
public class ContactMessage {
public string Name { get; set; }
public string sankdmfskm { get; set; }
}
[HttpPost]
public ActionResult Index(ContactMessage sankdmfskm)
{
...
}
Run Code Online (Sandbox Code Playgroud)
sankdmfskm会的null.
尝试过MVC3和MVC4.
adi*_*nas 12
有同样的问题.我在模型中的一个属性称为模型
public String model { get; set; }
Run Code Online (Sandbox Code Playgroud)
将属性重命名为myModel后.模型对象在ActionResult中停止返回null
有两种主要方式可以实现.
一种方法是你有自定义模型绑定不起作用.我假设你正在做所有开箱即用的事情,所以这不适用.
最可能的问题是数据没有获得POST.确保字段存在于 Delete按钮POST的同一Form中.