Страница ASP.net без кода позади
У меня есть страница ASP.Net с кодом C# позади.
Однако меня попросили не использовать код позади, чтобы его было легче развернуть в SharePoint.
Есть ли способ включить код C# на страницу ASP.Net, не используя отдельный код за файлом?
6 ответов
По умолчанию Sharepoint не разрешает выполнение серверного кода в файлах ASPX. Посмотрите, как решить эту проблему.
Тем не менее, я хотел бы подчеркнуть, что наличие кода сзади не обязательно сложно развернуть в Sharepoint (мы делаем это экстенсивно) - просто скомпилируйте ваши классы кода сзади в сборку и разверните ее, используя решение.
Если все еще нет, вы можете включить весь код, который вы обычно помещаете в код, следующим образом:
<script language="c#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
//hello, world!
}
</script>
Вы можете фактически иметь весь код на странице aspx. Как объяснено здесь.
Образец отсюда:
<%@ 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 есть два очень разных типа страниц: страницы приложения и страницы сайта.
Если вы собираетесь использовать свою страницу в качестве страницы приложения, вы можете безопасно использовать встроенный код или код на своей странице, поскольку страницы приложения находятся в файловой системе.
Если это будет страница сайта, вы можете безопасно написать встроенный код, если он у вас есть в первоначальном развертывании. Однако, если страница вашего сайта будет настроена в какой-то момент в будущем, встроенный код больше не будет работать, потому что настроенные страницы сайта живут в базе данных и выполняются в режиме asp.net "без компиляции".
Итог - вы можете написать aspx-страницы со встроенным кодом. Единственная проблема - с настроенными страницами сайта... которые больше не будут заботиться о вашем встроенном коде.
Файл: 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
Я думал, что вы можете развернуть только свою страницу.aspx без.aspx.cs, пока DLL находится в вашей корзине. Частично проблема заключается в том, как визуальная студия.net работает со страницами.aspx.
Проверьте это здесь: Работа с однофайловыми страницами веб-форм в Visual Studio .NET
Я точно знаю, что VS2008 с asp.net MVC RC у вас нет файлов с выделенным кодом для ваших просмотров.