2011-01-17 5 views
1

Прежде всего, я должен сообщить вам, что я новичок в этой области, изучая уроки.Отображение исходного кода при нажатии кнопки

Сказанное, что я ищу способ загрузки исходного кода из файла codebehind в текстовое поле, при нажатии кнопки. То же самое касается файла aspx.

Im, делающий этот сайт, где я собираюсь показать примеры кода из того, что я делаю. Поэтому, если я перейду к myweb.com/tutorial1done.aspx, эта страница покажет мне окончательный результат из учебника. Когда я нажимаю кнопку show source, это должно сделать 2 текстовых поля видимыми, и добавить кодовое имя в первый квадрат, а источник aspx - во второй.

Не знаю, если это возможно, но я надеюсь на это.

Это далеко у меня есть это:

ASPX:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DateTimeOutput.aspx.cs" Inherits="WebApplication1.DateTimeOutput" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
<link rel="stylesheet" href="../styles/codeformatter.css" /> 
</head> 
<body> 
<form id="form1" runat="server"> 
<customControls:Header runat="server" heading="Date and Time Output" /> 
<div> 
    <asp:Panel ID="Panel1" runat="server"> 
     <asp:TextBox ID="outputText" runat="server" Height="175px" TextMode="MultiLine" 
      Width="400px"></asp:TextBox> 
    </asp:Panel> 
</div> 
<asp:Panel ID="Panel2" runat="server"> 
    <asp:Button ID="runButton" runat="server" Text="Run Code" 
     onclick="runButton_Click" Width="95px" /> 
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <asp:Button ID="clearButton" runat="server" Text="Clear Console" 
     onclick="clearButton_Click" Width="95px" /> 
    <br /> 
    <br /> 
    <asp:Button ID="dt_showSource_btn" runat="server" 
     onclick="dt_showSource_btn_Click" Text="Show Source" /> 
</asp:Panel> 
<asp:Label ID="dtLabel1" runat="server" Text="Code Behind:" Visible="False"></asp:Label> 
<br /> 
<asp:TextBox ID="dtcb_output" runat="server" Height="175px" 
    TextMode="MultiLine" Visible="False" Width="400px"></asp:TextBox> 
<br /> 
<br /> 
<asp:Label ID="dtLabel2" runat="server" Text="ASPX:" Visible="False"></asp:Label> 
<br /> 
<asp:TextBox ID="dtaspx_output" runat="server" Height="175px" 
    TextMode="MultiLine" Visible="False" Width="400px"></asp:TextBox> 
</form> 
</body> 
</html> 

И в CodeBehind:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication1 
{ 
    public partial class DateTimeOutput : System.Web.UI.Page 
    { 
    protected void output(String value) 
    { 
     outputText.Text += value + Environment.NewLine; 
    } 

    protected void runButton_Click(object sender, EventArgs e) 
    { 
     DateTime dt = new DateTime(); 
     output(dt.ToString()); 
     DateTime nowDt = DateTime.Now; 
     output(nowDt.ToString()); 
    } 

    protected void clearButton_Click(object sender, EventArgs e) 
    { 
     outputText.Text = ""; 
    } 

    protected void dt_showSource_btn_Click(object sender, EventArgs e) 
    { 
     if (dtcb_output.Visible == false) 
     { 
      dtLabel1.Visible = true; 
      dtcb_output.Visible = true; 
     } 
     else 
     { 
      dtLabel1.Visible = false; 
      dtcb_output.Visible = false; 
     } 

     if (dtaspx_output.Visible == false) 
     { 
      dtLabel2.Visible = true; 
      dtaspx_output.Visible = true; 
     } 
     else 
     { 
      dtLabel2.Visible = false; 
      dtaspx_output.Visible = false; 
     } 

    } 

} 
} 

На данный момент источник подсветки не требуется, если его просто не сделать.

Thx заранее.

+0

Не уверен, имеете ли вы в виду некоторый предопределенный исходный код или ссылаетесь на исходный код для текущей страницы? –

+0

Я имел в виду источник текущей страницы. Но ответ mattens говорит мне, что это невозможно :) – fjappe

ответ

1

Если вы ссылаетесь на фактический код вашего кода за файлом, у вас есть проблема. Поскольку файл будет скомпилирован и затем помещен как промежуточный код в динамическую библиотеку ссылок (DLL), у вас больше нет доступа к файлу .aspx.cs. Единственный путь - включить код за файлом в проект deployd и открыть его с помощью FileStream (или что-то еще), чтобы прочитать его и отобразить его содержимое.

+0

Ну, я думаю, это было бы так же, как если бы я скопировал файл .cs в файл .txt и прочитал, что один? Это должно было облегчить для меня как-то - значит, я мог бы использовать функцию для всех моих законченных учебных пособий. – fjappe

+0

Где-то в вариантах сборки вы можете указать скрипт после сборки, который может автоматически скопировать файл в нужное положение (в каталог bin). – Matten

+0

Для меня это кажется слишком сложным, на данный момент - im полностью зеленое на asp.net и визуальной студии. – fjappe

Смежные вопросы