0x1A——ASP.NET开发小记

来源:互联网 发布:在宾夕法尼亚大学 知乎 编辑:程序博客网 时间:2024/06/17 14:31

1. QueryString的使用

可通过NavigatureURL或href等属性在打开一个页面时发送QueryString,使用方法如下:

如一个页面有如下的一个链接:

<a href="showpage.aspx?page=test" target="showpageFrame">Try</a>

此处,文本就会显示为Try,然后点击该链接会在一个名字叫showpageFrame的frame里面打开showpage.aspx,打开showpage.aspx时,它就会收到一个QueryString q,可以用如下方法获得该值:

        string page = HttpContext.Current.Request.QueryString["page"];        if (page != null)        {            pageframe.Attributes["src"] = page;        }        else        {            pageframe.InnerHtml = "<p>no page name</p>";        }

虽然没有说是否一定要判断这个QueryString存在,但我觉得最好还是判断一下。另外,如果有多个,就用&符号链接,类似para1=value1&para2=value2。没有办法传数组的样子,如果想传数组,那么就把数组拼成一个字符串传过去吧。

2.如何控制多个frame

按照上面的方法,只能控制一个frame的渲染效果,如果想控制两个或者更多frame的渲染,可以采取如下的方法。

假设有index.aspx页面,frameset结构如下:

    <frameset cols="20%,80%">        <frame name="treeview" frameborder="1" src="navigation.aspx" />        <frameset rows="50%,*">            <frame id="showpageFrame" frameborder="1" name="showpageFrame" src="showpage.aspx" />            <frame id="showcodeFrame" name="showcodeFrame" src="showcode.aspx" />        </frameset>    </frameset>

然后在treeview的frame中,即navigation.aspx想同时控制showpageFrame和showcodeFrame的渲染效果,可以在navigation.aspx中添加如下javascript代码,在点击按钮或其他链接后执行这几行即可:
parent.frames["showpageFrame"].location.href = "showpage.aspx?page=" + showpage;parent.frames["showcodeFrame"].location.href = "showcode.aspx?codes=" + showcodes;

这样的方法应该就可以控制多个frame的渲染了。


3. TreeView似乎没有onclick属性掉不了javascript怎么办?同时怎么获得TreeNode的Value值和Text值?

不确定TreeView有没有onclick,不过TreeNode肯定没有。可以采用如下的方法。在包含该TreeView的div中添加javascript函数,类似:

<div id="blabla" onclick="javascript:alert(\"hello\")"></div>

至于怎么获得TreeNode的Value和Text,这个专门转一篇文章来介绍吧。

不过简单的说就是可以这样:

function GetSelectedNode() {  var selectedNodeID = theForm.elements["<%=TreeView1.ClientID%>_SelectedNode"].value;  if (selectedNodeID != "") {    var selectedNode = document.getElementById(selectedNodeID);    var value = selectedNode.href.substring(selectedNode.href.indexOf(",") + 3, selectedNode.href.length - 2);    var text = selectedNode.innerHTML;    alert("Text = " + text + "\r\n" + "Value = " + value)  }  else {    alert("没有选择节点。")  }  // 也可以使用内置的对象    // var treeViewData = window["<%=TreeView1.ClientID%>" + "_Data"];  // selectedNodeID = treeViewData.selectedNodeID.value  return false;}
以上代码转自这里


4. asp.net说不支持frameset怎么办?

直接用就是了。。。


5.出现"潜在危险的客户端输入住"怎么办?

在web.config的<system.web>里面加上如下两个就好了,似乎都是要加的,虽然不知道什么用。

<httpRuntime requestValidationMode="2.0"/><pages validateRequest="false"></pages>


6.有时候一刷新static的数据值就不见了怎么办?

在相应的.aspx文件里面加上EnableViewState="true"就好了

原创粉丝点击