【发布时间】:2015-02-13 20:47:30
【问题描述】:
长话短说。我正在尝试在我的 C# MVC 3 应用程序中实现文件上传功能。 我有一个 fileuploader.js 文件,我认为该文件取自 http://github.com/valums/file-uploader(这原本不是我的应用程序)。 我想让文件上传功能可用于在我的视图中到达表上的行,行数将基于从数据库接收到的条目数。 我目前遇到的问题是 Upload btn 只出现在第一行。 我确定这是因为此功能从查找 id 为“file-uploader-attachment”的 div 开始 我尝试将 javascript 更改为 document.getElementsByClass 并给 div 一个类而不是一个 ID,但它没有成功。 因此,我需要即时生成和分配 ID,或者以其他方式为每行中的元素分配 ID,并允许 javascript 找到它们。 我会根据需要添加更多代码,但我不想用代码填充页面。 如果有人能指出我正确的方向或知道类似的解决方案。 同样,我需要一个文件上传 btn/feature 用于大小可变的表中的每一行。
表格中的单元格
<td id="file-uploader-attachment"></td>
相关 javascript 代码中 createUploader() 函数的开始
var uploader = new qq.FileUploader({
element: document.getElementById('file-uploader-attachment'),
脚本在视图中:
<script type="text/javascript">
$(document).ready(function () {
// requests attachments from server, clears existing attachments and
// replaces with most up to date attachments
function LoadAttachments() {
$('.loading').show();
$.post('/CalibrationViewer/GetAttachments', { calibrationId: CAL_ID }, function (data) {
$('#attachment').empty();
$('#attachment').append(data);
$('.loading').hide();
});
}
function handleCheckbox() {
if ($(this).find(':checkbox').is(':checked')) {
//$(this).find('#file-uploader-attachment').html($('#myHTML').html());
createUploader();
$(this).find('file-uploader-attachment-Class').removeClass("upload-placeholder-unchecked");
$(".qq-upload-button").css("margin-top", "-6px");
$(".qq-upload-button").css("margin-bottom", "-20px");
}
else {
$(this).find('.file-uploader-attachment-Class').addClass("upload-placeholder-unchecked");
$(this).find('.file-uploader-attachment-Class').html($('#myHTML2').html());
}
}
$('tr').each(handleCheckbox);
$('tr').on('click', handleCheckbox);
function createUploader() {
$(".file-uploader-attachment-Class").each(function (element) {
var uploader = new qq.FileUploader({
element: element,
sizeLimit: 2147483647, // max size
action: '/Controller/Action',
allowedExtensions: ['xls', 'xlsx', 'pdf', 'doc', 'docx', 'csv', 'txt', 'rtf', 'zip', 'zipx', '7z'],
params: {
customer: CUST_NAME,
calibrationId: CAL_ID
},
multiple: false,
debug: false,
onComplete: function (id, fileName, responseJson) {
var resultMessage = document.getElementById('resultMessage');
alert(responseJson.msg);
$('#resultMessage').addClass('greenText');
resultMessage.innerHTML = responseJson.msg;
$('#attachment').prepend('<p><a class="attachment-file" href="' + responseJson.fileId + '">' + responseJson.fileName + '</a>');
$('#removeAttachment').prepend('<p><a class="attachment-delete" href="' + responseJson.fileId + '">X</a></p>');
$('#no-attachments').remove();
}
});
});
}
});
【问题讨论】:
-
那么问题是什么。您需要唯一标识每个元素吗?因此,如果您使用的是 ID,那么它们需要是唯一的。我不清楚挂断在哪里。
-
如果我为表格单元格分配 ID,但我假设该单元格重复,这就是为什么我的上传 btn/功能只会启动一次。因为我可以拥有 5 个具有相同 ID 的单元格 ....follow ?
-
是的,我遵循这一点。所以他们必须被赋予唯一的ID。页面上只有一个元素应该有任何给定的 ID。所以我不清楚你在哪里卡住了。
标签: javascript c# jquery asp.net-mvc-3 file-upload