【发布时间】:2015-04-26 09:10:47
【问题描述】:
我在这里有一个令人困惑的问题。我正在 mvc 中创建一个博客。 Users的博客可以Post一个博客。不过,我最近更改了 Enitity Framework 中的 Post 表,以包括上传Picture (varbinary(max)) 的功能。
我已经在 User Create Post 控制器操作中处理了这个问题,我可以成功上传并在用户 Posts 上显示图片。
但是,当管理员必须允许发布帖子 (Simple Controller Scaffolding for Edit) 时,我的问题就出现了。 (没有用户可以在未经批准的情况下发布)为此,我的Post 表中有一个名为Published (bit, not null) 的字段。
当我尝试编辑用户的帖子以使用我的 AdminController 发布它时,我在保存更改时收到错误消息:
MyBlogger.Models.Post:图片字段为必填项。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Post post)
{
try
{
if (ModelState.IsValid)
{
db.Entry(post).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
}
这个问题很难解决,因为在我的编辑视图中我不能只说@Html.Picture(m => m.Picture) 为了显示图片,我必须将字节转换为 Base64 并显示它我必须这样做:
src="@Html.Raw("data:image/jpeg;base64," + ViewBag.ImageToShow)"
我的编辑操作中也没有选项db.AddOrUpdate(post); 我只有db.SaveChanges();
我只是用我的编辑操作做的就是
找到具有指定 Id 的帖子,更新该帖子的发布字段 具体帖子,将更改保存到数据库。
我不知道为什么它抱怨说图片字段是必需的?要么是因为Picture 字段的表条目设置为Not Null,要么是因为它再次为 Post 保存所有表条目,这会出现简单添加/更新的问题?
【问题讨论】:
标签: c# asp.net-mvc linq entity-framework razor