Я начинаю работать с DotNetNuke, и когда я пытаюсь использовать jQuery таким же образом, как я использую его на любой стандартной странице ASP.NET, он не работает. Например, я пытаюсь использовать uploadify, который использует jQuery и flash. Я не могу даже показать кнопку отмены в элементе управления.
Также будет полезна любая информация о том, как вызвать пример скрипта изнутри DotNetNuke. Теперь я понимаю, что должен быть обходной путь, и он отличается от простого asp.net
Вот код ascx:
<%@ Control Language="C#"
AutoEventWireup="true"
CodeBehind="TestUploadView.ascx.cs"
Inherits="TestUpload.TestUploadView"
%>
<title>Uploadify Example for
.NET</title>
<script
src="uploadify/jquery-1.4.2.min.js"
type="text/javascript"></script>
<script src="uploadify/swfobject.js"
type="text/javascript"></script>
<script
src="uploadify/jquery.uploadify.v2.1.4.min.js"
type="text/javascript"></script> <link
href="uploadify/uploadify.css"
rel="stylesheet" type="text/css" />
<asp:FileUpload ID="FileUpload1"
runat="server" />
<br />
<a href="#" id="startUploadLink">Start Upload</a>
<a href="#" id="clearQueueLink">Clear</a>
<script type = "text/javascript">
$(document).ready(function () {
$("#<%=FileUpload1.ClientID%>").uploadify({
'uploader': 'scripts/uploadify.swf',
'script': 'Upload.ashx',
'cancelImg': 'images/cancel.png',
'folder': '/uploads',
'multi': true
});
$("#startUploadLink").click(function () {
$('#<%=FileUpload1.ClientID%>').uploadifyUpload();
return false;
});
$("#clearQueueLink").click(function () {
$("#<%=FileUpload1.ClientID%>").uploadifyClearQueue();
return false;
});
});
</script>
Вот код для обработчика:
<%@ WebHandler Language="C#" Class="Upload" %>
using System;
using System.Reflection;
using System.Web;
using System.IO;
public class Upload : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
context.Response.Expires = -1;
try
{
HttpPostedFile postedFile = context.Request.Files["Filedata"];
string savepath = "";
string tempPath = "";
// retrieve the application path
string appPath = HttpContext.Current.Request.ApplicationPath;
// the content request comes from the jquery on the client.
//tempPath = context.Request["folder"];
tempPath = appPath + context.Request["folder"];
savepath = context.Server.MapPath(tempPath);
string filename = postedFile.FileName;
if (!Directory.Exists(savepath))
Directory.CreateDirectory(savepath);
postedFile.SaveAs(savepath + @"\" + filename);
context.Response.Write(tempPath + "/" + filename);
context.Response.StatusCode = 200;
}
catch (Exception ex)
{
context.Response.Write("Error: " + ex.Message);
}
}
public bool IsReusable {
get {
return false;
}
}
}
Используя обычный ASP.NET, скрипт на странице хорошо работает с обработчиком, но я не выяснил, как заставить его работать с DotNetNuke, также в Интернете мало информации о том, как заставить jQuery работать с DotNetNuke.