Подскажите, пожалуйста, как можно улучшить JS код и оптимизировать его?
Данный код частично написан мною, частично взять из сэмплов. Если где-то я ошибаюсь, пожалуйста, поправьте меня
Описание:
Есть функция, которая отвечает за аплоад файлов с нескольких ajax-контролов. Здесь она просто грузит файлы в кэш, так как потом вернувшееся значение функции submitbutton_click() отправляется на сервер, и на каждом контроле выполняется метод, который аплоадит эти файлы в директорию, где находится сам проект.
Серверный код, написанный на C#. В первом методе, OnInit, аттрибут кнопки SubmitButton получается значение, являющееся результатом выполнения JS функции submitbutton_click().
Метод fileinput_FileUploaded отвечает за копирование заапложенных файлов по указанному пути (в данном случае, этим путем является директория где находится solution.
Код:
|
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
SubmitButton.Attributes["onclick"] = "return submitbutton_click()";
}
int uploadcount = 0;
protected void fileinput_FileUploaded(object sender, UploaderEventArgs args)
{
uploadcount++;
args.CopyTo("~/" + args.FileName);
} |
Здесь достаточно все просто. Есть две кнопки, в которые можем добавить файлы для загрузки. И после того как мы добавили необходимые файлы в нужные контролы, нажимаем кнопку SubmitButton, которая запускает код JS для аплоада.
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="Scriptmanager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="middle">
<td class='standardText'><asp:Label Visible="true" ID="label1" runat="server"></asp:Label></td>
<td class='standardText'><CuteWebUI:UploadAttachments runat="server" ManualStartUpload="true" ID="fileinput1"
InsertText="Browse Files1" onfileuploaded="fileinput_FileUploaded"></CuteWebUI:UploadAttachments></td>
</tr>
<tr valign="middle">
<td class='standardText'><asp:Label Visible="true" ID="label2" runat="server"></asp:Label></td>
<td class='standardText'><CuteWebUI:UploadAttachments runat="server" ManualStartUpload="true" ID="fileinput2"
InsertText="Browse Files2" onfileuploaded="fileinput_FileUploaded"></CuteWebUI:UploadAttachments></td>
</tr>
<p>
<asp:Button runat="server" ID="SubmitButton" Text="Submit"/>
</p>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
В этом JS скрипте, в uploadobj и uploadobj2 записываем значение ID двух контролов, и затем проверяем, если хотя бы в одном есть больше одного файла для записи, начинаем аплоадить их поочереди.
function submitbutton_click() {
var submitbutton = document.getElementById('<%=SubmitButton.ClientID %>');
var uploadobj = document.getElementById('<%=fileinput1.ClientID %>');
var uploadobj2 = document.getElementById('<%=fileinput2.ClientID %>');
if (!window.filesuploaded) {
if (uploadobj.getqueuecount() > 0 || uploadobj2.getqueuecount() > 0) {
uploadobj.startupload();
uploadobj2.startupload();
}
return false;
}
window.filesuploaded = false;
return true;
}