_doPostBack added twice. one by manual and one by gridview in asp.net - asp.net

I have a page where i am rendering GridView. In GridView i have a CheckBox and once you check, uncheck, Jquery Dialog appears and i need a postback event on that dialog. so i am adding a manual postback on that page. everything is fine till gridview has only 1 page. as soon as gridview has more records, it add a _doPostBack method on page. so i now have a 2 _doPostBack method on page and nothing works because of this.
How can i define in my page that i do not want to add any _doPostBack method by any controls because i have already defined it manually?
Here is my HTML
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1">
<title>Store Management</title>
<script src="/js/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="/js/jquery-ui.min-1.10.1.js" type="text/javascript"></script>
<link href="/assets/styles/StorePortal/style-22012013.css" rel="stylesheet"
type="text/css" />
<link href="/assets/styles/StorePortal/jquery-ui.css" rel="stylesheet"
type="text/css" />
<link href="../App_Themes/AbleCommerce/ComponentArt.css" rel="stylesheet"
type="text/css" />
<link href="../App_Themes/AbleCommerce/print.css" rel="stylesheet" type=
"text/css" />
<link href="../App_Themes/AbleCommerce/style.css" rel="stylesheet" type=
"text/css" />
<link href="../App_Themes/AbleCommerce/webparts.css" rel="stylesheet" type=
"text/css" />
</head>
<body>
<form action=
"portal.aspx?q=bbaae796d951c95311f5ec3e599784079c6093ee&q1=COV" id=
"form1" method="post" name="form1">
<div>
<input id="__EVENTTARGET" name="__EVENTTARGET" type="hidden" value=
"" /> <input id="__EVENTARGUMENT" name="__EVENTARGUMENT" type=
"hidden" value="" />
</div><script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<div>
<input id="__VIEWSTATEENCRYPTED" name="__VIEWSTATEENCRYPTED" type=
"hidden" value="" />
</div>
<script type="text/javascript"> --> this one is added by me manually
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<div>
<input id="__EVENTTARGET" name="__EVENTTARGET" type="hidden" value=
"" /> <input id="__EVENTARGUMENT" name="__EVENTARGUMENT" type=
"hidden" value="" /> /// sOME CODE HERE
</div>
--> this one is added by me manually
</form>
</body>
</html>
Now, if i remove the _doPostBack added by me, gridview paging works. BUT when i have only 1 page in gridview, my event in jquery dialog does not work because it cant find _doPostBack.
ANSWER:
I have removed the _doPostBack() added by me and instead added this on my Page_Load() which adds a _doPostBack() even if there are no asp.net controls which requires this method.
ClientScript.GetPostBackEventReference(this, string.Empty);
BIG THANKS TO #Tim Schmelter for pointing to that LINK

I've had a similar problem, when trying to popup a dialog confirming a record deletion. This is the code I've used (jQuery UI dialog) and it works perfectly.
Don't add a new doPostBack. Instead, try to follow this idea. You can adapt it to fit your requirements:
// When the user tries to delete a record, show a confirmation.
$(".confirmationButton").click(function(e) {
// Stop the PostBack
e.preventDefault();
$(".confirmationDialog").dialog("open");
});
$(".confirmationDialog").dialog({
buttons: {
"No": function() {
$(this).dialog("close");
},
"Yes": function() {
$(this).dialog("close");
// User confirmed deletion, so carry on with the PostBack.
eval($("#ctl00_MainContentPlaceHolder_hdnBtnPostBack").val());
}
}
});
Somewhere on your code (when checking the page source), you'll find something like this:
<input id="ctl00_MainContentPlaceHolder_hdnBtnPostBack" type="hidden" value="__doPostBack('ctl00$MainContentPlaceHolder$btnDelete','')" name="ctl00$MainContentPlaceHolder$hdnBtnPostBack">
That's the object you will be using with eval().

Related

Bind Enter Key in Textbox to specific button

i have tried every possible script on StackOverflow but nothing is working.I want to bind enter key to a textbox , which clicks the specific button.
Code looks like this:
<form>
Enter URL: <input type="text" id="url" />
<input id="button" type="button" value="Load" onclick="loadUrl()" />
</form>
<iframe id="showUrl"></iframe>
button leads to another script for loading URL (which is working absolutely fine).But when i use any javascript or jquery, nothing happens, it shows "?" in main browser URL and my link from textbox disappers.
Sorry i am noob in programming, please help me
My loadUrl() Script:
<script type="text/javascript">
function loadUrl() {
var url = document.getElementById( 'url' ).value,
showUrl = document.getElementById( 'showUrl' );
showUrl.src = /$https?:\/\//.test(url) ? url : 'https://'+url;
}
</script>
Here's the example on Plunker. If you create the form correctly it should automatically submit when you press the enter key, or click the Go/submit button.
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<form id="theForm" method="GET" action="#">
Link:
<input type="text" id="url" />
<input type="submit" id="goButton" value="Go"/>
</form>
<iframe id="showUrl"></iframe>
<script src="script.js"></script>
</body>
</html>
script.js
var url = document.getElementById('url'),
showUrl = document.getElementById('showUrl'),
goButton = document.getElementById('goButton'),
theForm = document.getElementById('theForm');
function loadUrl(e) {
e.preventDefault();
showUrl.src = url.value;
return false;
}
theForm.addEventListener('submit', loadUrl);
url.addEventListener('keyup', function(e){
//You shouldn't need this since the form submits when you click enter anyway.
console.log(e.key);
console.log(e.which);
console.log(e.char);
});

How to play/pause a wav file in asp page

I need to play and pause a .wav file on an asp.net page, but I can't use flash, and it needs to be the lightest solution there could be.
I found how to play the sound, but I can't find a way to stop it.
this is my code: (with the element "embed" it's not working in IE, but with "bgsound" it's not working in Chrome)
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
var soundObject = null;
function PlaySound() {
if (soundObject != null) {
document.body.removeChild(soundObject);
soundObject = null;
}
soundObject = document.createElement("bgsound");
soundObject.setAttribute("src", "C:/sound1.wav");
soundObject.setAttribute("hidden", true);
soundObject.setAttribute("autostart", true);
document.body.appendChild(soundObject);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<input type = "button" onclick = "PlaySound()" value = "Play Sound" />
</form>
</body>
</html>
You can do this by using this namespace "Microsoft.DirectX.AudioVideoPlayback"
Here, an example --http://msdn.microsoft.com/en-us/library/bb324497(VS.85).aspx
This is possible using asp.net SoundPlayer Class
aspx page:
<asp:Button ID="Button1" runat="server" Text="Play" />
<asp:Button ID="Button2" runat="server" Text="Pause" />
HTML mark up you need to include this for previous versions,
<object data="sound1.wav"></object>
for the newer html5 you can use this:
<audio src="sound1.wav">
<p>Your browser does not support the audio element.</p>
</audio>
code behind file:
protected void Button1_Click(object sender, EventArgs e)
{
SoundPlayer playthewavfile = new SoundPlayer(#"C:/sound1.wav");
playthewavfile.Play();
}
protected void Button2_Click(object sender, EventArgs e)
{
SoundPlayer playthewavfile = new SoundPlayer(#"C:/sound1.wav");
playthewavfile.Stop();
}
EDIT:
If you want to do this purely with javascript and html try this:
I have not tested this, as I am very rusty using embed tag to parse audio file ever since html5 came out, you can try it and let me know if it works.
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function play() {
window.document.embeds[0].Play()
window.document.embeds[1].Play()
}
function stop() {
window.document.embeds[0].Stop()
window.document.embeds[1].Stop()
}
</SCRIPT>
</HEAD>
<BODY>
<EMBED SRC="sound1.wav" NAME="video" AUTOSTART="false">
<EMBED SRC= "sound1.wav" AUTOSTART="false">
<FORM>
<INPUT TYPE="BUTTON" VALUE="Play" onClick="play()">
<INPUT TYPE="BUTTON" VALUE="Pause" onClick="stop()">
</FORM>
</BODY>
</HTML>
It's not pretty, but I managed to terminate the sound like this.
function StopSound()
{
if (soundObject != null) {
soundObject.setAttribute("src", "");
soundObject = null;
}
}

Maximum number of words plugin issue on ckeditor

I am trying to implement a word count feature on some of my text areas that have been converted to wswgs' using ckeditor tutorial found here: http://www.n7studios.co.uk/2010/03/01/ckeditor-word-count-plugin/. This tutorial uses a custom plugin to count words for ckeditor. I get the correct word count but I am not able to see the color change to red when I surpass the maximum number of words allowed. I have used firebug to see how my text area looks like after it has been transformed into a wswg using ckeditor but I don't see anything strange. Here is my code:
<asp:Content ID="Content3" ContentPlaceHolderID="JSContent" runat="server">
<script src="<%: Url.Content("~/Scripts/jquery-1.7.min.js") %>" type="text/javascript"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.combobox.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/ckeditor/ckeditor.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/ckeditor/adapters/jquery.js") %>"></script> <%-- Must be linked last --%>
<script type="text/javascript">
$(document).ready(function () {
$(".cke_editor").ckeditor({
toolbar: 'custom'
});
});
<div class="form-row form-row-inline">
<%: Html.TextAreaFor(model => model.AssignmentText, new { #name = "table", #class = "cke_editor", #style = "display:none", #onchange = "setDirty(true)" })%>
<input name="tableWordCount" type="hidden" value="10" />
</div>
Here is the screen:
Any help greatly appreciated.
I finally figured it out. Html.TextAreaFor() asp.net mvc helper method takes, as a parameter, an object of html attributes as shown on the question code above. I originally had used the "name" property for the textarea so that it matches the "name property" on the ckeditor word count plugin. I had to instead use the "id" property.
ckeditor sample:
<html>
<head>
<title>CKEditor Word Count Demonstration</title>
<script type="text/javascript" src="jquery/jquery.1.4.min.js"></script>
<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
</head>
<body>
<form action="#" method="POST">
<p>
<label for="content">Content with 250 word limit</label>
<textarea name="content" class="ckeditor">Lorem Ipsum.</textarea>
<input type="hidden" name="contentWordCount" value="250" />
</p>
</form>
</body>
</html>
my new fixed code:
<asp:Content ID="Content3" ContentPlaceHolderID="JSContent" runat="server">
<script src="<%: Url.Content("~/Scripts/jquery-1.7.min.js") %>" type="text/javascript"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.combobox.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/ckeditor/ckeditor.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/ckeditor/adapters/jquery.js") %>"></script> <%-- Must be linked last --%>
<script type="text/javascript">
$(document).ready(function () {
$(".cke_editor").ckeditor({
toolbar: 'custom'
});
});
<div class="form-row form-row-inline">
<%: Html.TextAreaFor(model => model.AssignmentText, new { #id = "taxta", #class = "cke_editor", #style = "display:none", #onchange = "setDirty(true)" })%>
<input name="taxtaWordCount" type="hidden" value="10" />
</div>
So, the only thing I had to change is the "id" property. I hope this helps others. Again, Firebug was very helpful in delving through the html DOM and looking at how everything is rendered on the browser.

Why is this leaking memory in ie 8?

edit 2 -
To recreate - (I hope)
Create an empty asp.net project, add a default.aspx, and an about.aspx
use this code for the default.aspx file:
http://pastebin.com/4Ri1BufM
and this for about.aspx
http://pastebin.com/Ni9dZL7c
Build, and run sieve against it. Click the button, then the link. Sieve should now list 1 memory leak.
This simple layout puts a server button inside a panel. If you click it, and then the "Leave" link, sIEve reports 1 memory leak:
http://localhost:2605/Default.aspx (1 reference)
<INPUT value="partial postback" type=submit name=ctl01 >
Aspx source:
<%# Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="LeakTestProject._Default" %>
<html>
<head>
<title></title>
</head>
<body>
<form id="Form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button Text="partial postback" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
<a href="SomeOtherPage.aspx" >leave</a>
</body>
</html>
I've think I've tracked down a memory leak in my application to this source.
Would anyone be able to explain why this is happening, and what to do to fix it?
(Note - there is no server side code running)
edit-
Here is the generated html:
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="Default.aspx" id="Form1">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTUzNzM3OTMxMmRk27mKixZYS2MtHiuw7SZF6+1A/CkWRnnarcN2a05yCJs=" />
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['Form1'];
if (!theForm) {
theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="/WebResource.axd?d=_lxNoU5aYdEC_WWnUhGTN0VgFQnwFJ1fkZBkPhUGNITY1Tt87f4CGSPd9dhq2TD9I8lv5ljTGi956KpbHSLq3ebld0t7nKLON7Hc04CCAwA1&t=634525784292792916" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=0VE3fsyoY2cTFnat6m0YjE4OCCjVV0jmjSC6wigMBEOHyKW8kewBrhtJnBFIn73VSWcGW45QXwelC5m-1iZoornC8qWpZ-kXP-Y38e49qW1TbssOgo419ZWtVHSVmIpSg9CvXOQzUBClAjuHORyX5Q2&t=ffffffffbd2983fc" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
//]]>
</script>
<script src="/ScriptResource.axd?d=DBlWOXkmp0ycsSicGEZhACmLuhW1VF8BppK-Uj8ijyjhFxx7MTG8NW0gLl3IJ6TyEo2rAMfLCQ9rO_bk2wDCcpyT3Df6CN-TLMAA575gUNAjTSzC6U1koagV2FYRmu4TNsAgoEjhkN6fJX3lENf7Bw2&t=ffffffffbd2983fc" type="text/javascript"></script>
<div class="aspNetHidden">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgLZvOXNBgKiwImNCx8fSMXEwq+V+5yrnoaTcidPwoJw3ebm6DJQ1D3fVVAL" />
</div>
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ScriptManager1', 'Form1', ['tUpdatePanel1','UpdatePanel1'], [], [], 90, '');
//]]>
</script>
<div id="UpdatePanel1">
<input type="submit" name="ctl01" value="partial postback" />
</div>
</form>
<a href="About.aspx" >leave</a>
</body>
</html>
According to http://www.codeproject.com/KB/ajax/jqmemleak.aspx there is a memory leak that sounds a lot like what you are experiencing.
See "Iteration 2 - Memory Leak"
Using a tool called 'SIEve' he states 'You can see that every time I click refresh, it creates a new set of input elements without destroying the previous ones. '
His fix was a JQuery plugin that calls into the Update panel cleanup hooks. You could potentially try this?
(function($) {
$.fn.Disposable = function(cln) {
return this.each(function() {
var el = this;
if (!el.dispose) {
el.dispose = cleanup; // will be called by
// Microsoft for cleanup
$(window).bind("unload", cleanup);
}
function cleanup() {
if (!el)
return;
$(el).unbind();
$(window).unbind("unload", cleanup);
el.dispose = null;
el = null;
};
});
};
})(jQuery);
function add() {
$get('res').value =
parseInt($get('i1').value) + parseInt($get('i2').value);
}
Sys.Application.add_load(function() {
$('.num').change(add).Disposable();
});
could you please try this change:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script>
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(my_init);
function my_init() {
document.getElementById("UpdatePanel1").innerHTML = "";
}
</script>

Downloading a text file in ASP.NET is appending the web page HTML

Thanks to help I previously received on this forum I was able to get my asp.net web site to download all kinds of files to the client browser.
For some odd reason, when I download text files, the HTML of the web page is being appended to the text! All other file types work fine!
Here's the code that's doing the download:
Public Sub DownloadBlob(ByVal Blob As Byte(), ByVal FileName As String, ByVal Response As HttpResponse)
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", FileName.Replace(" ", "_")))
Response.ContentType = String.Format("application/{0}", Path.GetExtension(FileName).Substring(1))
Response.BinaryWrite(Blob)
End Sub
and here's what's coming out of my text file:
Here is a test file
I hope it works!
:)
Saul
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
EEI - Case
</title><link rel="stylesheet" href="EEI.css" />
<script language="javascript" id="jssembleWare" src="sembleWare.js"></script>
</head>
<body>
<form name="form1" method="post" action="EEICaseEditForm.aspx" id="form1">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTg4MDg2NjA2Ng8WAh4Uc2VtYmxlV2FyZV9QYWdlU3RhdGUymXsAAQAAAP////8BAAAAAAAAAAwCAAAARnN3UnVudGltZUFTUE5ldCwgVmVyc2lvbj0zLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwMAwAAAEBzd1J1bnRpbWUsIFZlcnNpb249My41LjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsDAQAAABJU3lzdGVtLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQUBAAAAKHNlbWJsZVdhcmUuUnVudGltZS5BU1BOZXQuUGFnZU5hdmlnYXRpb24KAAAAE21vUHJldmlvdXNQYWdlU3RhdGUKbXNQYWdlTmFtZRJtc1JlZGlyZWN0UGFnZU5hbWUPbW9TdXBwbGllZFBhcnRzB21vTGlzdHMKbWJWaWV3T25seQdtbkRlcHRoCm1vUGFydFBvb2wKbW9TZXR0aW5ncxBtb1BlcnNpc3RlZEl0ZW1zBAEBBAMAAAQDBChzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlBhZ2VOYXZpZ2F0aW9uAgAAACdzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydHMCAAAA8wFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5EaWN0aW9uYXJ5YDJbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW3NlbWJsZVdhcmUuUnVudGltZS5BU1BOZXQuTGlzdFN0YXRlLCBzd1J1bnRpbWVBU1BOZXQsIFZlcnNpb249My41LjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0BCBtzZW1ibGVXYXJlLlJ1bnRpbWUuUGFydFBvb2wDAAAAHFN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGUtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAAIAAAAJBQAAAAYGAAAAFS9FRUlDYXNlRWRpdEZvcm0uYXNweAoJBwAAAAkIAAAAAAMAAAAJCQAAAAkKAAAACQsAAAABBQAAAAEAAAAJDAAAAAYNAAAAEi9DYXNlR3JpZEZvcm0uYXNweAoJDgAAAAkPAAAAAAIAAAAKCgoFBwAAACdzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydHMCAAAAD21vU3VwcGxpZWRQYXJ0cwxtb05hdmlnYXRpb24DBPYBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydCwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dKHNlbWJsZVdhcmUuUnVudGltZS5BU1BOZXQuUGFnZU5hdmlnYXRpb24CAAAAAgAAAAkQAAAACQEAAAAECAAAAPMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZSwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dBAAAAAdWZXJzaW9uCENvbXBhcmVyCEhhc2hTaXplDUtleVZhbHVlUGFpcnMAAwADCJIBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0VxdWFsaXR5Q29tcGFyZXJgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0I9wFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbc2VtYmxlV2FyZS5SdW50aW1lLkFTUE5ldC5MaXN0U3RhdGUsIHN3UnVudGltZUFTUE5ldCwgVmVyc2lvbj0zLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXVtdBwAAAAkSAAAABwAAAAkTAAAABQkAAAAbc2VtYmxlV2FyZS5SdW50aW1lLlBhcnRQb29sAgAAAAptblNlcXVlbmNlC21vUG9vbEl0ZW1zAAMIHFN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGUDAAAAEwAAAAkUAAAABAoAAAAcU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZQcAAAAKTG9hZEZhY3RvcgdWZXJzaW9uCENvbXBhcmVyEEhhc2hDb2RlUHJvdmlkZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMDAAUFCwgcU3lzdGVtLkNvbGxlY3Rpb25zLklDb21wYXJlciRTeXN0ZW0uQ29sbGVjdGlvbnMuSUhhc2hDb2RlUHJvdmlkZXII7FE4PwEAAAAKCgsAAAAJFQAAAAkWAAAABQsAAAAtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAARoZWFkB3ZlcnNpb24FY291bnQIY29tcGFyZXIEAAADPFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5MaXN0RGljdGlvbmFyeStEaWN0aW9uYXJ5Tm9kZQQAAAAICBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyBAAAAAoAAAAAAAAAAAoBDAAAAAEAAAAKBhcAAAAOL01haW5NZW51LmFzcHgGGAAAAAAJGQAAAAkaAAAAAAEAAAAKCgoBDgAAAAcAAAAJGwAAAAkFAAAAAQ8AAAAIAAAABAAAAAkdAAAABwAAAAkeAAAABBAAAAD2AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkRpY3Rpb25hcnlgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbc2VtYmxlV2FyZS5SdW50aW1lLkFTUE5ldC5TdXBwbGllZFBhcnQsIHN3UnVudGltZUFTUE5ldCwgVmVyc2lvbj0zLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXQQAAAAHVmVyc2lvbghDb21wYXJlcghIYXNoU2l6ZQ1LZXlWYWx1ZVBhaXJzAAMAAwiSAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkdlbmVyaWNFcXVhbGl0eUNvbXBhcmVyYDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dCPoBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW3NlbWJsZVdhcmUuUnVudGltZS5BU1BOZXQuU3VwcGxpZWRQYXJ0LCBzd1J1bnRpbWVBU1BOZXQsIFZlcnNpb249My41LjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV1bXQUAAAAJEgAAAAMAAAAJIAAAAAQSAAAAkgFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5HZW5lcmljRXF1YWxpdHlDb21wYXJlcmAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQAAAAAHEwAAAAABAAAABwAAAAP1AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZSwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dBN/////1AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZSwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAgAAAANrZXkFdmFsdWUBBCNzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZQIAAAAGIgAAABNDb3VudHJ5T2ZPcmlnaW5MaXN0CSMAAAAB3P///9////8GJQAAAA5Bc3NpZ25lZFRvTGlzdAkmAAAAAdn////f////BigAAAAOQ2FzZVN0YXR1c0xpc3QJKQAAAAHW////3////wYrAAAAFFJlcXVlc3RlZFNlcnZpY2VMaXN0CSwAAAAB0////9////8GLgAAAAlEb2N1bWVudHMJLwAAAAHQ////3////wYxAAAAB0hpc3RvcnkJMgAAAAHN////3////wY0AAAAE1JlcXVlc3RlZEJ5VXNlckxpc3QJNQAAAAEUAAAACgAAAOxROD8eAAAACgoXAAAACTYAAAAJNwAAABAVAAAAAQAAAAY4AAAABlVzZXJJRBAWAAAAAQAAAAgJBwAAAAAAAAABGQAAAAcAAAAJOQAAAAkMAAAABBoAAADzAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkRpY3Rpb25hcnlgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbc2VtYmxlV2FyZS5SdW50aW1lLkFTUE5ldC5MaXN0U3RhdGUsIHN3UnVudGltZUFTUE5ldCwgVmVyc2lvbj0zLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXQMAAAAHVmVyc2lvbghDb21wYXJlcghIYXNoU2l6ZQADAAiSAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkdlbmVyaWNFcXVhbGl0eUNvbXBhcmVyYDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dCAAAAAAJOwAAAAAAAAABGwAAABAAAAANAAAACR0AAAAHAAAACT0AAAABHQAAABIAAAAHHgAAAAABAAAABAAAAAP1AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZSwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAcL////f////Bj8AAAAEQ2FzZQlAAAAAAb/////f////BkIAAAAUUmVxdWVzdGVkU2VydmljZUxpc3QJQwAAAAG8////3////wZFAAAAEUN1cnJlbnRTdGF0dXNMaXN0CUYAAAABuf///9////8GSAAAABNDb3VudHJ5T2ZPcmlnaW5MaXN0CUkAAAAHIAAAAAABAAAAAQAAAAP4AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydCwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dBLb////4AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydCwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAgAAAANrZXkFdmFsdWUBBCZzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydAIAAAAGSwAAABNTZW5pb3JFdmFsdWF0b3JSb2xlCUwAAAAFIwAAACNzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZQoAAAAKbXNMaXN0TmFtZRFtb1NlbGVjdGVkUm93S2V5cw1tb1BhZ2VSb3dLZXlzDm1uTGlzdFJvd0NvdW50Dm1uUGFnZVJvd0NvdW50D21uUGFnZVJvd051bWJlchBtbkN1cnJlbnRQYWdlTnVtDG1zU29ydENvbHVtbg5tYlJldmVyc2VPcmRlchFtc1JlcG9zaXRpb25BbGlhcwEDAwAAAAABAAGOAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbc2VtYmxlV2FyZS5SdW50aW1lLkFTUE5ldC5Sb3dEYXRh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AQAAAAd2YWx1ZV9fAAgDAAAAAAAAAAEBcwAAAHIAAAAGtgAAABpFRUlDYXNlNjMzNzE2Nzk2NTg1MzEyNTAwNglqAAAACQkAAAAJuQAAAAm6AAAACbsAAAABRP///2b///8BAAAABr0AAAAHRUVJQ2FzZQFC////S////wAAAAABAXQAAAByAAAABr8AAAAJU3RhZmYsIDE1CWsAAAAJCQAAAAnCAAAACcMAAAAJxAAAAAE7////Zv///wIAAAAGxgAAAAVTdGFmZgE5////S////wAAAAABAXUAAAByAAAABsgAAAANU3lzdGVtVXNlciwgNwlsAAAACQkAAAAJywAAAAnMAAAACc0AAAABMv///2b///8CAAAABs8AAAAKU3lzdGVtVXNlcgEw////S////wAAAAABAXYAAAByAAAABtEAAAAZUGVyc29uNjMzNzE2Nzk2NTg1MzEyNTAwNwltAAAACQkAAAAJ1AAAAAnVAAAACdYAAAABKf///2b///8BAAAABtgAAAAGUGVyc29uASf///9L////AAAAAAEBdwAAAHIAAAAG2gAAAB1TeXN0ZW1Vc2VyNjMzNzE2Nzk2NDYwNjI1MDAwMwluAAAACQkAAAAJ3QAAAAneAAAACd8AAAABIP///2b///8BAAAABuEAAAAKU3lzdGVtVXNlcgEe////S////wAAAAABAXgAAAByAAAABuMAAAAZUGVyc29uNjMzNzE2Nzk2NDYwNjI1MDAwNAlvAAAACQkAAAAJ5gAAAAnnAAAACegAAAABF////2b///8BAAAABuoAAAAGUGVyc29uARX///9L////AAAAAAEBeQAAAHIAAAAG7AAAAAdSb2xlLCAxCXAAAAAJCQAAAAnvAAAACfAAAAAJ8QAAAAEO////Zv///wIAAAAG8wAAAARSb2xlAQz///9L////AAAAAAEBegAAAHIAAAAG9QAAABpFRUlDYXNlNjMzNzE2Nzk2NTg1MzEyNTAwNQlxAAAACQkAAAAJ+AAAAAn5AAAACfoAAAABBf///2b///8BAAAACb0AAAABA////0v///8AAAAAAQF7AAAAEgAAAAd8AAAAAAEAAAAEAAAAA/gBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5TdHJpbmcsIG1z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
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<!--Script to confirm btnEditDocument Action-->
I didn't include everything; you get the idea.
So, what is wrong with my code, and how do I prevent this from happening?
You need to call Response.End.
Public Sub DownloadBlob(ByVal Blob As Byte(), ByVal FileName As String, ByVal Response As HttpResponse)
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", FileName.Replace(" ", "_")))
Response.ContentType = "text/plain"
Response.BinaryWrite(Blob)
Response.End()
End Sub
Also notice I set the ContentType a little differently.

Resources