Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 使用ASP.NET MVC上传BlueImp jQuery_Asp.net Mvc_Asp.net Mvc 3_Jquery_Jquery Plugins - Fatal编程技术网

Asp.net mvc 使用ASP.NET MVC上传BlueImp jQuery

Asp.net mvc 使用ASP.NET MVC上传BlueImp jQuery,asp.net-mvc,asp.net-mvc-3,jquery,jquery-plugins,Asp.net Mvc,Asp.net Mvc 3,Jquery,Jquery Plugins,我一直在为我正在开发的网站寻找一个合适的图像上传组件,该组件将支持多个图像上传,能够在上传后一个接一个地删除这些单独的上传,并且可以很好地与.NET MVC配合使用 到目前为止,我看到的最好的组件是,并从这里下载了示例MVC项目: 然而,我有两个问题,我正试图让我的头左右 第1期 在我的web应用程序中,用户可以创建一篇文章,在输入文章详细信息的同一页面上,在将该文章提交到留言板之前,他们需要能够上载1个或多个图像(使用jQuery文件上载) 上面BlueImp项目中的示例代码处理图像上传,文

我一直在为我正在开发的网站寻找一个合适的图像上传组件,该组件将支持多个图像上传,能够在上传后一个接一个地删除这些单独的上传,并且可以很好地与.NET MVC配合使用

到目前为止,我看到的最好的组件是,并从这里下载了示例MVC项目:

然而,我有两个问题,我正试图让我的头左右

第1期
在我的web应用程序中,用户可以创建一篇文章,在输入文章详细信息的同一页面上,在将该文章提交到留言板之前,他们需要能够上载1个或多个图像(使用jQuery文件上载)

上面BlueImp项目中的示例代码处理图像上传,文件存储在服务器上的适当位置,成功上传后更新UI,以反映用户上传的图像

然而,当用户实际提交他们的帖子时,在我的控制器的ActionMethod中,除了存储正常的帖子详细信息外,我还需要存储用户为其帖子上传的任何图片的详细信息(更具体地说是文件名),这样我就可以将帖子详细信息与相关的x上传图片相关联

在提交帖子的ActionMethod中获取上传的图片信息的最佳方式是什么?我曾考虑将信息存储在Session对象中,然后在'SubmitPost'ActionMethod中嗅探这些信息,但我不喜欢依赖sessions(如果我能提供帮助的话)来解决过期问题。我还考虑在数据库中有一个“UploadLog”表,它保存该用户上传的图像,这些图像尚未提交(随帖子一起提交),但除非我有一些定期运行的内务处理过程,否则这可能会变得混乱?我希望jQueryUpload提供的请求集合中有一个简单的东西,列出上传图像的文件名,或者类似的东西

第二期
一旦我解决了上述问题,我想允许用户编辑他们现有的帖子,其中一些帖子会上传与他们相关的照片

当他们到达我的编辑帖子页面时,除了用他们最初提供的帖子详细信息预先填充页面上的所有控件外,我还想显示他们为此帖子上传的图片列表,以及删除任何图片或上传其他图片的能力

我可以在BlueImp示例MVC项目中看到,对于等待上传的图像和已成功上传的图像,都有一个jQuery模板,但在我刚才描述的“编辑帖子”场景中,在示例应用程序中看不到如何填充成功上传图像列表的任何示例

下面是我视图中的模板,它成功地呈现了上传的图像,这正是我希望在这个“EditPost”场景中重新填充的理想情况

<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
    <tr class="template-download fade">
        {% if (file.error) { %}
            <td></td>
            <td class="name"><span>{%=file.name%}</span></td>
            <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
            <td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
        {% } else { %}
            <td class="preview">{% if (file.thumbnail_url) { %}
                <a href="{%=file.url%}" title="{%=file.name%}" rel="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
            {% } %}</td>
            <td class="name">
                <a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a>
            </td>
            <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
            <td colspan="2"></td>
        {% } %}
        <td class="delete">
            <button class="btn btn-danger" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}">
                <i class="icon-trash icon-white"></i>
                <span>{%=locale.fileupload.destroy%}</span>
            </button>
            <input type="checkbox" name="delete" value="1">
        </td>
    </tr>
{% } %}
</script>

{%for(var i=0,file;file=o.files[i];i++){%}
{%if(file.error){%}
{%=文件名%}
{%=o.formatFileSize(file.size)%}
{%=locale.fileupload.error%}{%=locale.fileupload.errors[file.error]| | file.error%}
{%}其他{%}
{%if(file.thumbnail_url){%}
{% } %}
{%=o.formatFileSize(file.size)%}
{% } %}
{%=locale.fileupload.destroy%}
{% } %}
如果您对以上两个问题有任何帮助,我们将不胜感激

更新
问题1现在可以使用Darin的建议来解决,即创建一个Guid,传递到视图,然后在调用上载函数时返回到上载函数

问题2我现在已经设法解决了,不久将发布我的解决方案

第1期

您可以在呈现创建窗体时创建新Guid。然后,当上传文件时,您将它们存储在
服务器.MapPath(“~/files/{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}”)
文件夹中。然后,在提交表单时,唯一Guid将作为隐藏字段发送,您可以继续在相应文件夹中查找用户上载的所有文件:

public ActionResult Create()
{
    var id = Guid.NewGuid();
    // pass this to the view
}

[HttpPost]
public ActionResult Upload(Guid id)
{
    // store the uploaded file at the specified by the GUID sub-folder
}
第二期

同样的技术,只需使用关联的Guid,而不是创建新的Guid:

public ActionResult Edit(Guid guid)
{
    // go and fetch all the files that are inside the corresponding folder
}

由于您的建议,第1期现在已排序。我知道问题2可以应用相同的方法,从posts upload文件夹获取上传的文件,但我的问题是,如何在“EditPost”页面首次加载时填充“upload files”jQuery模板(我提到的示例项目是我第一次接触jQuery模板,因此如果我忽略了明显的问题,我很抱歉)。我可以填充最初上传图像时使用的相同JSON对象(包含url、文件名等),但不知道如何在页面首次加载时将其“发送”到jQ temp。