asp.net mvc 1 到许多保存帖子和上传文件
-
21-08-2019 - |
题
我是 ASP.NET MVC 新手。
我正在使用 Linq to Sql 并尝试松散耦合地完成所有工作。
我有两张桌子:
- 消息
- 新闻档案
我想做的是保存新闻并同时上传其文件。
如何创建新闻并将其保存到 NewsFiles 表中?
Linq to Sql 模型是好的,它包括 NewsFile 对象到 News 对象。
我的新闻表的具体存储库类(葡萄牙语的 noticia):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MagixCMS.Models
{
public class NoticiaRepository : INoticiaRepository
{
#region INoticiaRepository Members
magixcmsEntities _entities = new magixcmsEntities();
public noticia CreateNoticia(noticia noticiaToCreate)
{
_entities.AddTonoticiaSet(noticiaToCreate);
_entities.SaveChanges();
return noticiaToCreate;
}
public void DeletaNoticia(noticia noticiaToDelete)
{
var noticiaOriginal = GetNoticia(noticiaToDelete.Id);
_entities.DeleteObject(noticiaOriginal);
_entities.SaveChanges();
}
public noticia EditNoticia(noticia noticiaToEdit)
{
var noticiaOriginal = GetNoticia(noticiaToEdit.Id);
_entities.ApplyPropertyChanges(noticiaToEdit.EntityKey.EntitySetName, noticiaToEdit);
_entities.SaveChanges();
return noticiaToEdit;
}
public noticia GetNoticia(int id)
{
return (from c in _entities.noticiaSet where c.Id == id select c).FirstOrDefault();
}
public IEnumerable<noticia> ListNoticias()
{
return _entities.noticiaSet.ToList();
}
#endregion
}
}
看看这没有提到 NewsFile 对象。
解决方案
A 强的 忠告:上传/附加文件 后 “附加目标”记录已创建。
我有一个类似的情况,我有(实际上几乎相同)“公告”对象,我可以在其中附加图像或 PDF 附件。我最初的想法是允许发布新公告(标题、类别、正文等) 和 要上传的文件。现在,不可否认,我正在尝试设计同时上传许多文件(以及对失败上传的巧妙响应/验证)。但重点是:这个方法太难了。帮自己一个忙,让用户先创建记录,然后附加/上传文件。存在主键表记录也会使事情变得更容易。
编辑:有关文件和上传的更多信息:
我用一个 File
对象在我的数据库中存储文件(所以是的,我需要一个二进制/图像字段 byte[]
)。然后我有其他代表具体文件的对象,例如 Image
和 PdfDoc
继承自 File
- 这些包括其他属性(例如宽度和高度) Image
类型)。我有一个部分视图,它向详细视图呈现可重用的上传控件,当将其提交到 AttachImage()
或者 AttachPdfDoc()
针对具体情况的方法 Announcement
(创建后 - 见上文)。服务层负责在验证后存储文件等并链接对象。然后详细视图会重新加载,并且列出附件可供公众下载。(注意:顺便说一句,这是大量总结的 - 我也只允许经过身份验证的用户在详细视图上使用编辑控件(上传表单))