не работает всплывающее окно загрузки файла
Я работаю над приложением ASP.NET Web Form. Мое требование - показывать всплывающее окно загрузки файла Excel, когда пользователь нажимает на данную ссылку (эта ссылка на poppage, а не на странице aspx.). У меня есть страница aspx со ссылкой. Когда пользователь щелкает, он вызывает функцию js, через которую мы вызываем метод веб-сервиса для генерации html для всплывающего экрана.
КОД:
function showListModelFromGenrator(divId) {
var lowner = $("#" + hdnLoggedInOwnerID)[0].value;
var sowner = $("#" + hdnSelectedOwnnerID)[0].value;
var commID = $("#" + hdnCommunityId)[0].value;
var controlid = '#' + divId;
$.ajax({
url: baseUrl + '/' + "WebServices/ExtraInfoWebService.asmx/GetProductActivityStatus",
data: { LoggedInOwnerId: lowner, SelectedOwnerId: sowner, CommunityId: commID },
success: function (response) {
$(controlid).dialog("destroy");
$(controlid).dialog({
autoOpen: false,
modal: true,
width: 560,
height: 370,
resizable: false
}).empty().append(response.text);
$(controlid).dialog('open');
var busyBox = new BusyBoxWrapper()
busyBox.HideBusyBoxAfter(5);
},
cache: false
});
}
веб-метод:
[WebMethod(EnableSession = true)]
public string GetProductActivityStatus(int LoggedInOwnerId, int SelectedOwnerId, int CommunityId)
{
StringBuilder stringAuditStatus = new StringBuilder();
Audit objdata = new Audit();
try
{
DataTable dt = new DataTable();
int ownerID = LoggedInOwnerId;
if (SelectedOwnerId != 0)
ownerID = SelectedOwnerId;
dt = objdata.GetListmodeldata(ownerID, CommunityId);
stringAuditStatus.Append(@"Code" +
"Description" +
"Status" +
"Date");
foreach (DataRow item in dt.Rows)
{
stringAuditStatus.Append(
"" + item["Code"] + "" +
"" + item["Description"] + "" +
"" + item["Status"] + "" +
"" + item["Date"] + "");
}
stringAuditStatus.Append("");
stringAuditStatus.Append("<a id="lnkViewProductCodeStatus" runat="Server" href="#" onclick="javascript:ExportExel();">DownloadListModel</a>");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return stringAuditStatus.ToString();
}
когда пользователь нажимает на "lnkViewProductCodeStatus " (созданный выше веб-методом). мы называем функцию JSExportExcel
который вызывает метод обработчика для обработки файла для загрузки.
function ExportExel(){
var abc;
$.ajax({
type: "POST",
url: baseUrl + '/' + "WebServices/ExtraInfoWebService.asmx/Urlhttphandler",
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
//window.open(msg.d);
$.ajax({
type: "POST",
url: msg.d,
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
//window.open(msg.d);
}
});
}
});
public void ProcessRequest(HttpContext context)
{
string FullFilePath = context.Server.MapPath("~/Certificates/" + "ExcelFile.xls");
System.IO.FileInfo file = new System.IO.FileInfo(FullFilePath);
if (file.Exists)
{
//For more MIME types list http://msdn.microsoft.com/en-us/library/ms775147%28VS.85%29.aspx
context.Response.ContentType = MIMETypeUtility.MIMETypeDescription(MIMEType.Excel);
context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + file.Name + "\"");
context.Response.AddHeader("Content-Length", file.Length.ToString());
context.Response.WriteFile(file.FullName);
context.Response.Flush();
context.Response.End();
}
}
когда я отлаживаю, вызов приложения идет правильно к пользователю, но всплывающее окно загрузки файла не появляется. Тот же код, который я пробовал на странице (не во всплывающем окне), работает нормально. Кто-нибудь может подсказать мне, почему это не работает в моем случае.
Большое спасибо, Прашант