【问题标题】:MvcFileUploader add/edit custom fieldMvcFileUploader 添加/编辑自定义字段
【发布时间】:2013-12-20 18:18:20
【问题描述】:

我正在使用 MVCFileUploader https://github.com/marufbd/MvcFileUploader

这非常适合在我的 MVC 项目中上传图像并将它们与实体相关联。

当我尝试为每个可编辑的图像添加标题字段时,我无法让它工作。我不确定我是否以正确的方式处理这个问题。我已修改 _MvcFileLoad.cshtml 中的模板以具有附加字段。我可以在每次上传时在控制器中获取标题输入,但我不知道如何使用此项目的实现将其发送回视图。

这是 _MvcFileUpload.cshtml,我添加了 autoUpload:true

  $('#@(formId)').fileupload('option', { 
    autoUpload: true,
    maxFileSize: @Model.MaxFileSizeInBytes,
    resizeMaxWidth: 1920,
    resizeMaxHeight: 1200,
    acceptFileTypes: @Model.FileTypes
}); 

我为标题添加了输入

<form id="@formId" action="@Model.UploadUrl" method="POST" enctype="multipart/form-data">        
    <div class="row fileupload-buttonbar">                    
        <div class="col-lg-7">
            <!-- The fileinput-button span is used to style the file input field as button -->
            <span class="btn btn-success fileinput-button">
                <i class="glyphicon glyphicon-plus"></i>
                <span>Add files...</span>
                <input type="file" name="files[]" multiple>

            </span>
            Title: <input name="title" required />

在每次自动上传时,我都可以保存标题并将其与控制器中的文件和实体相关联。如果用户愿意,我无法将其返回视图进行编辑。我试图修改_MvcFileUpload.cshtml中的模板下载

<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
    <tr class="template-download fade">
        <td>
            <span class="preview">
                {% if (file.thumbnailUrl) { %}
                    <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" data-gallery><img src="{%=file.thumbnailUrl%}"></a>
                {% } %}
            </span>
        </td>
        <td>
            <p class="name">
                {% if (file.url) { %}
                    <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" {%=file.thumbnailUrl?'data-gallery':''%}>{%=file.name%}</a>
                {% } else { %}
                    <span>{%=file.name%}</span>
                {% } %}
            </p>
            {% if (file.error) { %}
                <div><span class="label label-danger">Error</span> {%=file.error%}</div>
            {% } %}
        </td>
        <td>
        Title: <input name="title" required />
             </td>
        <td>
            <span class="size">{%=o.formatFileSize(file.size)%}</span>
        </td>
        <button class="btn btn-save" data-type="What to put here?" data-url="What to put here?" >
                    <i class="glyphicon glyphicon-save"></i>
                    <span>Save</span>
                </button>
            {% if (file.deleteUrl) { %}
                <button class="btn btn-danger delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
                    <i class="glyphicon glyphicon-trash"></i>
                    <span>Delete</span>
                </button>
                <input type="checkbox" name="delete" value="1" class="toggle">
            {% } else { %}
                <button class="btn btn-warning cancel">
                    <i class="glyphicon glyphicon-ban-circle"></i>
                    <span>Cancel</span>
                </button>
            {% } %}
        </td>
    </tr>
{% } %}
</script>

我看到的下一个问题是,如果我得到标题以进行编辑,如何将更新后的输入发回?只有 UploadFile 和 DeleteFile 方法可以调用。

总之,我正在尝试对此进行修改,以便用户可以上传多张照片并编辑其标题。
MvcFileUploader 使用 blueimp jQuery-File-Upload。我查看了该文档,在 PHP 的文档中有一些类似于我所要求的内容,但我无法让它与 MVC 一起使用。 https://github.com/blueimp/jQuery-File-Upload/wiki/PHP-MySQL-database-integration

【问题讨论】:

    标签: javascript jquery asp.net-mvc jquery-file-upload blueimp


    【解决方案1】:

    只要你的Controller方法是HttpPost,你可以在方法中添加(string title)参数,它会自动从输入框中获取值。否则,您需要在 javascript ajax 调用中添加 data 属性。

    要在上传后编辑标题,您应该有一个不同的页面。让他们查看图像,并在可编辑字段中显示一个带有标题的文本框,然后在那里有一个提交按钮。您无需再次上传图片,只需在表单中输入图片的 ID。

    【讨论】:

    • 我已经能够使用string title 参数在控制器方法中获取标题。把它带回来并编辑它就是问题所在。我试图通过使用不同的页面来避免您提供的方法,因为这是一个额外的步骤。感谢您的快速回答。
    • 没问题。这确实是最好的解决方案。您真的不想再次上传文件。它真正需要的只是一个简单的页面,或者如果你想变得花哨,你可以做一个 jQuery UI 消息框。
    • 这不是我正在寻找的解决方案,但您可能是对的,它是使用此插件的最佳解决方案,无需耗时工作。我正在寻找一种解决方案,用户可以在同一屏幕上更改图像及其标题。看起来这会让这个插件做一些它不打算做的事情。感谢您的意见。在我想出自己的上传页面之前,我将不得不使用两页流程。
    • 以下是我的看法,为什么我认为您对此的处理方式有些偏离。你似乎在做什么的关键是图像。这确实是这个操作的根源。因此,如果您允许用户同时更改图像文件和标题,那么他们实际上是在删除旧图像和标题,并创建一个新的。标题实际上是图像的辅助。您可以更改您想要调用图片的内容,但更改图片以适合标题并不是我认为您正在尝试做的事情的根源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2021-07-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多