C# 如何在ASP.Net中创建和保存文档和模板? 我过去的经历

C# 如何在ASP.Net中创建和保存文档和模板? 我过去的经历,c#,asp.net,document,C#,Asp.net,Document,我对C win forms有大约04年的经验,对WPF和其他一些语言有一点了解,但对ASP.Net或任何web应用程序都是新手 问题描述 我想在我的公司内部创建一个文档管理站点,管理员可以在其中定义模板,如visual studio中的“我们获取项目模板”,这样我们就可以了解是否创建文本、电子表格或其他类型的文档,如MS Word或Excel,并可以向其中添加和保存多个字段。然后,用户可以访问保存的模板,使用相同的模板但不同的数据创建自己的文件并保存。我还需要保存版本更改 我该怎么做? 在ASP

我对C win forms有大约04年的经验,对WPF和其他一些语言有一点了解,但对ASP.Net或任何web应用程序都是新手

问题描述 我想在我的公司内部创建一个文档管理站点,管理员可以在其中定义模板,如visual studio中的“我们获取项目模板”,这样我们就可以了解是否创建文本、电子表格或其他类型的文档,如MS Word或Excel,并可以向其中添加和保存多个字段。然后,用户可以访问保存的模板,使用相同的模板但不同的数据创建自己的文件并保存。我还需要保存版本更改

我该怎么做? 在ASP.Net中实现像在WPF中那样的富文档支持是否非常困难? 是因为有了谷歌文档才重新发明轮子,还是人们可以购买微软Office并创建文档并将其保存在服务器上,尽管并非所有人都会购买它? 我应该在DB中将模板保存为Xml或HTML还是如何保存?
任何出发点或参考都将不胜感激

其实做起来并不难。我刚刚完成了一个项目,整个UI围绕着允许用户创建、保存、编辑,然后填充模板展开。实际上,您可以将信息保存在字节数组中,然后将其保存到数据库中。下面是我使用的一个新模板方法的示例。这并不困难,但是这里可以包含更多的信息。表单的创建是最难的部分。这个表单的创建是3100行代码

private void doNew()
    {
        try
        {
            this.m_bDialogOpen = true;
            //New instance of data object
            MergeLetterDocsDO clnt = new MergeLetterDocsDO(7);
            //Creates a new title or name for the template
            NewMergeLetterTitle title = new NewMergeLetterTitle("New Merge Letter", 7);
            DialogResult dr = title.ShowDialog();

            if (dr == DialogResult.OK)
            {

                Form1 frm = new Form1(Simple.Form1.DocumentTypes.MERGE_LETTER,  Simple.Form1.OperationModes.DESIGN_TIME, null);
                frm.ShowDialog(this);

                byte[] bb = frm.InternalFormatDocument;
                byte[] rtfbb = frm.RtfFormatDocument;
                clnt.SaveNewMergeTemplate(bb, rtfbb, bb.Length, rtfbb.Length, title.MergeLetterTitle);
            }

            this.m_bDialogOpen = false;

            this.Populate();
        }
        catch (Exception ex)
        {
            Trace.WriteLine(ex.Message);
        }
    }O

其实做起来并不难。我刚刚完成了一个项目,整个UI围绕着允许用户创建、保存、编辑,然后填充模板展开。实际上,您可以将信息保存在字节数组中,然后将其保存到数据库中。下面是我使用的一个新模板方法的示例。这并不困难,但是这里可以包含更多的信息。表单的创建是最难的部分。这个表单的创建是3100行代码

private void doNew()
    {
        try
        {
            this.m_bDialogOpen = true;
            //New instance of data object
            MergeLetterDocsDO clnt = new MergeLetterDocsDO(7);
            //Creates a new title or name for the template
            NewMergeLetterTitle title = new NewMergeLetterTitle("New Merge Letter", 7);
            DialogResult dr = title.ShowDialog();

            if (dr == DialogResult.OK)
            {

                Form1 frm = new Form1(Simple.Form1.DocumentTypes.MERGE_LETTER,  Simple.Form1.OperationModes.DESIGN_TIME, null);
                frm.ShowDialog(this);

                byte[] bb = frm.InternalFormatDocument;
                byte[] rtfbb = frm.RtfFormatDocument;
                clnt.SaveNewMergeTemplate(bb, rtfbb, bb.Length, rtfbb.Length, title.MergeLetterTitle);
            }

            this.m_bDialogOpen = false;

            this.Populate();
        }
        catch (Exception ex)
        {
            Trace.WriteLine(ex.Message);
        }
    }O

基于SharePoint的项目是一个可行的选择吗?@YannickBlondeau:可能不是——因为我的公司可能不会投资SharePoint和学习曲线。我读过一些文章,其中共享点将MS SQL中的文档保存为blob。我希望我的方法能带来最低的投资和最快的方式。Sharepoint绝对是一个可行的参考/基准起点。如果你能自己编写代码,你可以使用成本较低的替代方案,并模仿Sharepoint的功能。基于Sharepoint的项目是可行的选择吗?@YannickBlondeau:可能不是-因为我的公司可能不会投资Sharepoint和相关的学习曲线。我读过一些文章,其中共享点将MS SQL中的文档保存为blob。我希望我的方法能带来最低的投资和最快的方式。Sharepoint绝对是一个可行的参考/基准起点。如果您可以自己编写代码,您可以使用成本较低的替代方案,使用LAMP堆栈并模仿Sharepoint的功能。