背後にC#コードを含むASP.Netページがあります。
ただし、コードビハインドを使用しないように求められました。これにより、SharePointでの展開が容易になります。
別のコードビハインドファイルを使用せずに、ASP.NetページにC#コードを含める方法はありますか?
デフォルトでは、SharePointはサーバー側のコードをASPXファイルで実行することを許可しません。 これを参照 それを解決する方法について。
ただし、分離コードを持つことは必ずしもSharepointで展開するのが難しいとは言えません(私たちは広範囲に行います)-分離コードクラスをアセンブリにコンパイルし、 solution を使用して展開するだけです。
それでもない場合は、通常のようにコードビハインドに配置するすべてのコードを含めることができます。
<script language="c#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
//hello, world!
}
</script>
実際には、aspxページにすべてのコードを含めることができます。説明したとおり こちら 。
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>
はい、aspxページにrunat = serverでスクリプトタグを含めます
<script language="c#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
// some load code
}
</script>
クラシックASP構文を使用することもできます
<% if (this.MyTextBox.Visible) { %>
<span>Only show when myTextBox is visible</span>
<% } %>
SharePointには、アプリケーションページとサイトページという2種類のページがあります。
ページをアプリケーションページとして使用する場合、アプリケーションページがファイルシステムに存在するため、ページ内でインラインコードまたはコードビハインドを安全に使用できます。
サイトページになる場合は、最初の展開でそのようなコードを持っている限り、インラインコードを安全に記述できます。ただし、将来のある時点でサイトページがカスタマイズされる場合、カスタマイズされたサイトページはデータベースに存在し、asp.netの「コンパイルなし」モードで実行されるため、インラインコードは機能しなくなります。
要するに-インラインコードでaspxページを書くことができます。唯一の問題は、カスタマイズされたサイトページにあります...これは、インラインコードを気にしなくなります。
DLLがビンにある限り、.aspx.csなしで.aspxページだけをデプロイできると考えました。ここでの問題の一部は、Visual Studio .netが.aspxでどのように機能するかです。ページ。
こちらをご覧ください: Visual Studio .NETでの単一ファイルWebフォームページの操作
Asp.net MVC RCを備えたVS2008には、ビュー用の分離コードファイルがないことは確かです。
ファイル: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