我有一個文件夾結構樹,我想在幾個頁面上重複使用,我正在爲此構建一個用戶控件(webForms),它帶有一個小的jquery,它可以從httphandler顯示html。到現在爲止還挺好。我希望用戶能夠點擊我從我的http處理程序返回的HTMl文件夾上的鏈接,但似乎我的頁面無法將頁面上的jquery與http處理程序返回的jquery連接起來。在我的ascx文件中,我有文件夾鏈接的事件處理程序,並且鏈接在我的http處理程序中生成。問題與asp.net和jQuery AJAX
public void ProcessRequest(HttpContext context)
{
List<MultimediaType> types = typeRepository.LoadAll(); //load all the types for displaying in the list
types.ForEach(x =>
{
multimediaTypes.Add(x.Id, x.Name);
});
int folderId = string.IsNullOrEmpty(context.Request["folderid"]) ? 0 : int.Parse(context.Request["folderid"]);
//load folders, from query string, if no folderid in querystring, then default to root
List<MultimediaFolder> folders = repository.LoadAll(folderId);
//load files
List<Multimedia> files = fileRepository.LoadAll(folderId);
string folderData = BuildFolderList(folders);
string fileData = BuildFileList(files);
context.Response.ContentType = "text/html";
context.Response.Write("<b>" + DateTime.Now.ToString() + "</b>");
context.Response.Write("<script type='text/javascript'>");
context.Response.Write("$('.folderlink').click(function() {");
//context.Response.Write("$.get('FolderStructureHandler.ashx', function (data) {");
context.Response.Write("alert('test');");
context.Response.Write("});");
context.Response.Write("});");
context.Response.Write("</script>");
context.Response.Write("<table border='1'>");
context.Response.Write("<th><td>Name</td><td>Type</td></th>");
context.Response.Write(folderData);
context.Response.Write(fileData);
context.Response.Write("</table>");
}
和我的用戶控件的代碼很簡單:
<script type="text/javascript">
$(document).ready(function() {
$.get("FolderStructureHandler.ashx", function (data) {
$("#folderList").html(data);
});
});
</script>
<div id="folderList"></div>
兩種方法寫的HTML很簡單:
private string BuildFolderList(List<MultimediaFolder> folders)
{
StringBuilder builder = new StringBuilder();
foreach (MultimediaFolder folder in folders)
{
builder.AppendFormat("<tr><td width='20'><img src='../Images/folder.png'/></td><td colspan='2'><a href='#' class='folderlink'>{0}</a></td></tr>", folder.Name);
}
return builder.ToString();
}
我試圖擁有jQuery的在.ascx標記中使用.click()事件處理程序也沒有成功,現在我試圖用http處理程序中的html發送它,但仍然沒有成功。有沒有人可以解決這個問題。
即時得到裝載在第一時間的數據,並認爲我的HTML表格,但是當我點擊一個鏈接沒有任何反應......
真誠,
編輯 小的修改所產生的JQuery從HttpHandler的,現在讓警報(我有一個語法錯誤),但我現在每次調用處理,但日期時間似乎並沒有改變......
新的HttpHandler代碼:
//load files
List<Multimedia> files = fileRepository.LoadAll(folderId);
string folderData = BuildFolderList(folders);
string fileData = BuildFileList(files);
context.Response.ContentType = "text/html";
context.Response.Write("<b>" + DateTime.Now.ToString() + "</b>");
context.Response.Write("<script type='text/javascript'>");
context.Response.Write("$('.folderlink').click(function() {");
context.Response.Write("$.get('FolderStructureHandler.ashx', function (data) {");
context.Response.Write("alert(data);");
context.Response.Write("});");
context.Response.Write("});");
context.Response.Write("</script>");
context.Response.Write("<table border='1'>");
context.Response.Write("<th><td>Name</td><td>Type</td></th>");
context.Response.Write(folderData);
context.Response.Write(fileData);
context.Response.Write("</table>");
這會創建一個帶有表格的彈出窗口,但日期總是相同的,就好像它被緩存了一樣。
日期後24個小時內將改變:)你可以做'DateTime.Now.ToString( 「YYYY.MM.DD HH:MM:SS:FFFF」)'包括毫秒,看看它的緩存或不 – Rafay