Reputation: 8431
I understand the difference between Client-side and Server-side scripting. I have a javascript function and variable in my MasterPage
:
<script language="JavaScript" type="text/javascript">
var needToConfirm = false;
window.onbeforeunload = confirmExit;
function confirmExit()
{
if (needToConfirm)
{
needToConfirm = false;
return "Currently in edit mode. If you leave the page now then you will lose unsaved changes."
}
}
</script>
Given the fact that on my ASP.NET (Client-side) I can change the value of my needToConfirm
variable to true
onClientClick
but by default it is false. Here's an example.
<asp:Button ID="btnEdit" runat="server" Text=" Edit " onclick="btnEdit_Click" OnClientClick="needToConfirm = true;" />
Now the question here is when on the C# (Server-side) I have to set the needToConfirm
to true under an if-statement
but not necessarily on Page_Load
:
private void SetDefault()
if (Session[def.ID_CUST] != null)
{
//I want to change the variable value here
}
}
Thanks.
UPDATE
I'm using .NET 2.0 Classic and WebForms
Upvotes: 8
Views: 35538
Reputation: 115
Maby this helps?
<script type="text/javascript">
function test(confirm){
var needToConfirm = confirm;
window.onbeforeunload = confirmExit;
function confirmExit() {
if (needToConfirm) {
needToConfirm = false;
return "Currently in edit mode. If you leave the page now then you will lose unsaved changes."
}
}
}
</script>
<asp:Button ID="btnEdit" runat="server" Text="Edit" onclick="btnEdit_Click" OnClientClick="javascript:test(true);" />
Upvotes: 1
Reputation: 4711
Just for reference. Here is the 4.5 way to do something like this:
// Define the name and type of the client scripts on the page.
const String csname1 = "MyScriptName";
Type cstype = this.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegistered(cstype, csname1))
{
StringBuilder cstext1 = new StringBuilder();
cstext1.Append("<script> var myVariable = true; </");
cstext1.Append("script>");
cs.RegisterStartupScript(cstype, csname1, cstext1.ToString());
}
Upvotes: 1
Reputation: 4101
You can use a hidden input and then set this input to true
or false
from the server side.
On the client side:
<input type="hidden" id="hdnConfirm" runat="server" value="false"/>
Then on the server side:
if (Session[def.ID_CUST] != null)
{
//I want to change the variable value here
hdnConfirm.Value = "true";
}
Then on the client side:
var needToConfirm = $('#hdnConfirm').val();
Upvotes: 8
Reputation: 3844
Based on your update saying it's .NET 2.0, this is how you can set a javascript variable:
Page.RegisterStartupScript("SetVar", "var needToConfirm = true;");
http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerstartupscript(v=vs.80).aspx
Upvotes: 1
Reputation: 2012
in code behind:
ScriptManager.RegisterStartupScript(this, this.GetType(), "", "urFunction('urValHere');", true);
on client-side:
function urFunction(urParam) {
//do what u want here
//use urParam
}
Upvotes: 8
Reputation: 16595
If I understand this correctly, you could register a client script like in the example at http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx.
ClientScriptManager cs = Page.ClientScript;
if (!cs.IsStartupScriptRegistered(this.GetType(), "EditMode")) {
cs.RegisterStartupScript(this.GetType(), "EditMode", "needToConfirm = true;", true);
}
That would write a script to the page setting the value of needToConfirm
in Javascript.
Upvotes: 2