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中的源码和获取文件的内容是两个概念,