2009-02-19 34 views
56

Tôi có một trang ASP.Net với mã C# phía sau.Trang ASP.net không có mã đằng sau

Tuy nhiên, tôi đã được yêu cầu không sử dụng mã phía sau - vì vậy sẽ dễ triển khai hơn trong SharePoint.

Có cách nào để bao gồm mã C# trong trang ASP.Net, mà không sử dụng mã riêng biệt phía sau tệp không?

Trả lời

83

Bằng Sharepoint mặc định không cho phép thực thi mã phía máy chủ trong các tệp ASPX. See this để biết cách giải quyết. Tuy nhiên, tôi sẽ nêu ra rằng có một mã phía sau không nhất thiết phải triển khai trong Sharepoint (chúng tôi làm rộng rãi) - chỉ biên dịch các lớp mã-sau của bạn thành một assembly và triển khai nó bằng cách sử dụng một solution.

Nếu vẫn không có, bạn có thể bao gồm tất cả các mã bạn thường đặt trong một codebehind như vậy:

<script language="c#" runat="server"> 
public void Page_Load(object sender, EventArgs e) 
{ 
    //hello, world! 
} 
</script> 
+1

Cảm ơn :) Đây là lần đầu tiên chúng tôi thực sự đã phải sử dụng Sharepoint đây, tôi đã không chắc chắn nếu điều đó đã thực sự chính xác. – Sophia

+9

Tôi muốn nhấn mạnh lại điểm của Rex M rằng bạn nên nghiêm túc xem xét việc sử dụng mã đằng sau các hội đồng và triển khai chúng thông qua các tệp giải pháp thay vì nới lỏng bảo mật của SharePoint cho trường hợp triển khai dễ dàng hơn. Đây là thực hành tốt nhất và thực sự khá đơn giản với các tệp giải pháp. – webwires

+0

@RexM Có khả năng phát triển dự án ASP.NET mà không sử dụng C#? – FaizanRabbani

19

Bạn thực sự có thể có tất cả mã trong trang aspx. Như được giải thích here.

mẫu từ here:

<%@ Language=C# %> 
<HTML> 
    <script runat="server" language="C#"> 
    void MyButton_OnClick(Object sender, EventArgs e) 
    { 
     MyLabel.Text = MyTextbox.Text.ToString(); 
    } 
    </script> 
    <body> 
     <form id="MyForm" runat="server"> 
     <asp:textbox id="MyTextbox" text="Hello World" runat="server"></asp:textbox> 
     <asp:button id="MyButton" text="Echo Input" OnClick="MyButton_OnClick" runat="server"></asp:button> 
     <asp:label id="MyLabel" runat="server"></asp:label> 
     </form> 
    </body> 
</HTML> 
6

có trên trang aspx của bạn bao gồm một thẻ script với runat = server

<script language="c#" runat="server"> 

public void Page_Load(object sender, EventArgs e) 
{ 
    // some load code 
} 
</script> 

Bạn cũng có thể sử dụng cổ điển ASP Cú pháp

<% if (this.MyTextBox.Visible) { %> 
<span>Only show when myTextBox is visible</span> 
<% } %> 
3

tôi nghĩ bạn có thể triển khai chỉ trang aspx của bạn mà không .aspx.cs quá lâu vì DLL nằm trong thùng rác của bạn. Một phần của vấn đề ở đây là cách studio trực quan. Net hoạt động với các trang .aspx.

Kiểm tra nó ra ở đây: Working with Single-File Web Forms Pages in Visual Studio .NET

Tôi biết chắc chắn rằng VS2008 với asp.net MVC RC bạn không có file code-behind cho quan điểm của bạn.

7

Có hai loại trang rất khác nhau trong SharePoint: Trang Ứng dụng và Trang Trang.

Nếu bạn định sử dụng trang của mình làm Trang ứng dụng, bạn có thể sử dụng mã nội tuyến hoặc mã nội tuyến một cách an toàn trong trang của mình, vì trang Ứng dụng nằm trên hệ thống tệp.

Nếu đó là Trang web, bạn có thể viết mã nội tuyến một cách an toàn miễn là bạn có mã như vậy trong triển khai ban đầu. Tuy nhiên, nếu trang web của bạn sẽ được tùy chỉnh tại một số điểm trong tương lai, mã nội tuyến sẽ không còn hoạt động vì các trang trang web được tùy chỉnh nằm trong cơ sở dữ liệu và được thực hiện trong chế độ "không biên dịch" của asp.net.

Điểm mấu chốt là - bạn có thể viết các trang aspx bằng mã nội tuyến. Vấn đề duy nhất là với các trang Site tùy chỉnh ... mà sẽ không còn quan tâm đến mã nội tuyến của bạn nữa.

2

File: logdate.aspx

<%@ Page Language="c#" %> 
<%@ Import namespace="System.IO"%> 
<% 

StreamWriter tsw = File.AppendText(@Server.MapPath("./test.txt")); 
tsw.WriteLine("--------------------------------"); 
tsw.WriteLine(DateTime.Now.ToString()); 

tsw.Close(); 
%> 

Done 
Các vấn đề liên quan