读书人

JAVASCRIPT读取本地ASP.NET页面有关问

发布时间: 2011-12-21 23:56:01 作者: rapoo

JAVASCRIPT读取本地ASP.NET页面问题
只想读取一个Test.aspx页面,把.aspx页面的源代码(包括服务器端的任何控件)
Test.aspx源代码如下:
/****************************************************************

<%@ Page language= "c# " Codebehind= "Test.aspx.cs " AutoEventWireup= "false " Inherits= "UserPopedom.Web.NavigationMenu.Test " %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN " >
<HTML>
<HEAD>
<title> Test </title>
<meta name= "GENERATOR " Content= "Microsoft Visual Studio .NET 7.1 ">
<meta name= "CODE_LANGUAGE " Content= "C# ">
<meta name= "vs_defaultClientScript " content= "JavaScript ">
<meta name= "vs_targetSchema " content= "http://schemas.microsoft.com/intellisense/ie5 ">
</HEAD>
<body MS_POSITIONING= "GridLayout ">
<form id= "Form1 " method= "post " runat= "server ">
<asp:DataGrid id= "DataGrid1 " style= "Z-INDEX: 101; LEFT: 216px; POSITION: absolute; TOP: 112px "
runat= "server "> </asp:DataGrid>
</form>
</body>
</HTML>

*****************************************************************/


在HTML中JAVASCRIPT可以读出来

显示的内容跟上面的代码一样的;


问题是同样的代码放在.aspx中去处理

就会显示其生成后的源代码:

显示的内容如下:
/*****************************************************************

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN " >
<HTML>
<HEAD>
<title> Test </title>
<meta name= "GENERATOR " Content= "Microsoft Visual Studio .NET 7.1 ">
<meta name= "CODE_LANGUAGE " Content= "C# ">
<meta name= "vs_defaultClientScript " content= "JavaScript ">
<meta name= "vs_targetSchema " content= "http://schemas.microsoft.com/intellisense/ie5 ">
</HEAD>
<body MS_POSITIONING= "GridLayout ">
<form name= "Form1 " method= "post " action= "Test.aspx " id= "Form1 ">
<input type= "hidden " name= "__VIEWSTATE " value= "dDwtNTcyNzE4MDk2O3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDE+Oz47bDx0PEAwPDs7Ozs7Ozs7Ozs+Ozs+Oz4+Oz4+Oz4vNOdKYRmg/fxi8tmIBO7mVPf9RA== " />


</form>
</body>
</HTML>
*********************************************************************/

如何在.aspx中获取Test.aspx的源代码呢?????????????

或者知道为什么的告诉一下:

谢谢




[解决办法]
JAVASCRIPT客户端读取肯定就是aspx在客户端生成的html代码啊。
[解决办法]
GetPageHtml.aspx

<%@ Page language= "c# " validateRequest = "false " Codebehind= "GetPageHtml.aspx.cs "
AutoEventWireup= "false " Inherits= "eMeng.Exam.GetPageHtml " %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN " >


<HTML>
<HEAD>
<title> 得到网页源代码 </title>
<meta name= "GENERATOR " Content= "Microsoft Visual Studio 7.0 ">
<meta name= "CODE_LANGUAGE " Content= "C# ">
<meta name= "vs_defaultClientScript " content= "JavaScript ">
<meta name= "vs_targetSchema " content= "http://schemas.microsoft.com/intellisense/ie5 ">
</HEAD>
<body MS_POSITIONING= "GridLayout ">
<form id= "aspNetBuffer " method= "post " runat= "server ">
<div align= "center " style= "FONT-WEIGHT: bold "> 得到任意网页源代码 </div>
<asp:TextBox id= "UrlText " runat= "server " Width= "400px "> http://dotnet.aspx.cc/content.aspx
</asp:TextBox>
<asp:Button id= "WebClientButton " Runat= "server " Text= "用WebClient得到 "> </asp:Button>
<asp:Button id= "WebRequestButton " runat= "server " Text= "用WebRequest得到 "> </asp:Button>
<br>
<asp:TextBox id= "ContentHtml " runat= "server " Width= "100% " Height= "360px " TextMode= "MultiLine ">
</asp:TextBox>
</form>
</body>
</HTML>


GetPageHtml.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
namespace eMeng.Exam
{
/// <summary>
/// GetPageHtml 的摘要说明。
/// </summary>
public class GetPageHtml : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button WebClientButton;
protected System.Web.UI.WebControls.Button WebRequestButton;
protected System.Web.UI.WebControls.TextBox ContentHtml;
protected System.Web.UI.WebControls.TextBox UrlText;
protected System.Web.UI.WebControls.Button GetText;
private string PageUrl = " ";

private void Page_Load(object sender, System.EventArgs e)
{}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.WebClientButton.Click += new System.EventHandler(this.WebClientButton_Click);
this.WebRequestButton.Click += new System.EventHandler(this.WebRequestButton_Click);
this.GetText.Click += new System.EventHandler(this.GetText_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void WebClientButton_Click(object sender, System.EventArgs e)
{
PageUrl = UrlText.Text;
WebClient wc = new WebClient();
wc.Credentials = CredentialCache.DefaultCredentials;

///方法一:
Byte[] pageData = wc.DownloadData(PageUrl);
ContentHtml.Text = Encoding.Default.GetString(pageData);


/// 方法二:
/// ***************代码开始**********
/// Stream resStream = wc.OpenRead(PageUrl);
/// StreamReader sr = new StreamReader(resStream,System.Text.Encoding.Default);
/// ContentHtml.Text = sr.ReadToEnd();
/// resStream.Close();


/// **************代码结束********
///
wc.Dispose();
}

private void WebRequestButton_Click(object sender, System.EventArgs e)
{
PageUrl = UrlText.Text;
WebRequest request = WebRequest.Create(PageUrl);
WebResponse response = request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
ContentHtml.Text = sr.ReadToEnd();
resStream.Close();
sr.Close();
}

private void GetText_Click(object sender, System.EventArgs e)
{
PageUrl = UrlText.Text;
WebRequest request = WebRequest.Create(PageUrl);
WebResponse response = request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
ContentHtml.Text = sr.ReadToEnd();
resStream.Close();
sr.Close();
ContentHtml.Text = Regex.Replace(ContentHtml.Text, " <[^> ]*> ", " ");
//替换空格
ContentHtml.Text = Regex.Replace(ContentHtml.Text, "\\s+ ", " ");
}
}
}

具体的孟老大这里看
http://dotnet.aspx.cc/article/0a6660ce-4138-41ef-b882-15db65564709/read.aspx
[解决办法]
我的观点:

我想应该获取的是生成后的源码
因为你的Test.aspx是在URL中的,这样好像只能获取生成后的源码

至于你的Html获取到的源码,那只是一个文件,

获取URL中的源码和获取文件的内容是两个概念,

读书人网 >asp.net

热点推荐