![](/img/trans.png)
[英]How to access master page control in child .aspx page (in javascript)
[英]How to access javascript variable in .net master page
我需要启用.net母版页中存在的脚本,仅在使用该母版页的选定html页中。 可以通过在需要此脚本的html页面的javascript中声明一个变量并将变量设置为某个值来实现,以便仅当变量为NotNullorEmpty时才能在母版页中启用脚本? 有人知道这是否有效吗? 如果是这样,如何在html中获取javascript变量,进入.net主页?
我可以想到两种方法。
第一个将变量分配给隐藏的输入字段。 可以在Request.Form中访问。
HTML
<input type="hidden" value="your value" name="Hidden1" id="Hidden1"/>
JavaScript的
document.getElementById('Hidden1').value = "an other value";
C#
var myValue = Request.Form["Hidden1"];
第二种是将变量保存到cookie中,该cookie可以在Request.Cookies中访问。
var myValue = Response.Cookies["Cookie1"].Value;
我所见过的最灵活的形式是将JSON对象直接作为脚本呈现到页面(添加您可能还需要添加的任何其他脚本),然后使javascript代码在表单上为JSON数据填充一个隐藏字段,以供提交服务器解析。
以下是基本步骤:
JavaScriptSerializer
.NET类。) script
标签及其内容填充LiteralControl
。 (这在OnPreRender步骤中效果很好,但是您可以在其他位置进行。) JavaScriptSerializer
从提交的对象中读取值。 您基本上想要做的是测试javascript。
有几种方法可以做到这一点,但是我会同时使用服务器端和客户端Cookie。
在您的global.asax的onbeginrequest中,测试“ js-test-s”的服务器端cookie
[HTML]\n [头]\n [元刷新标签设置为1秒/]\n [脚本设置“ js-test-c” cookie,然后强制刷新/]\n [/头]\n [机构] [/体]\n [HTML]
警告:您可能要存储原始请求详细信息,并在禁用cookie的情况下重定向到其他位置。
我可能无法正确理解问题,但据我所知,最简单的方法是在母版页上创建一个属性,然后在需要执行脚本的所有页面上设置它:
在母版页中
public bool EnableScript
{
set
{
if (value == true)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "startup", "alert('test');", true);
}
}
}
在需要运行使用当前母版页的javascript的所有页面中:
protected void Page_Load(object sender, EventArgs e)
{
this.Master.EnableScript = true;
}
如果您必须在每个页面上输出JavaScript,即使是在一次不执行的页面上(为什么?),也可以将其添加为函数,然后在属性内添加代码以调用该函数,并将属性设置为在需要执行JavaScript的所有页面上为true。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.