Страница ASP.net без кода позади - PullRequest
61 голосов
/ 19 февраля 2009

У меня есть страница ASP.Net с кодом C #.

Однако меня попросили не использовать код позади, чтобы его было проще развернуть в SharePoint.

Есть ли способ включить код C # на страницу ASP.Net без использования отдельного кода позади файла?

Ответы [ 6 ]

91 голосов
/ 19 февраля 2009

По умолчанию Sharepoint не разрешает выполнение серверного кода в файлах ASPX. См. , как решить эту проблему.

Однако я хотел бы подчеркнуть, что наличие кода сзади не обязательно сложно развернуть в Sharepoint (мы делаем это экстенсивно) - просто скомпилируйте ваши классы кода сзади в сборку и разверните его, используя решение .

Если все еще нет, вы можете включить весь код, который вы обычно помещаете в код, следующим образом:

<script language="c#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
  //hello, world!
}
</script>
20 голосов
/ 19 февраля 2009

Вы можете фактически иметь весь код на странице 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>
7 голосов
/ 19 февраля 2009

В SharePoint есть два очень разных типа страниц: страницы приложения и страницы сайта.

Если вы собираетесь использовать свою страницу в качестве страницы приложения, вы можете безопасно использовать встроенный код или код на своей странице, поскольку страницы приложения находятся в файловой системе.

Если это будет страница сайта, вы можете безопасно писать встроенный код, если он у вас есть в первоначальном развертывании. Однако если в какой-то момент в будущем будет настроена страница вашего сайта, встроенный код больше не будет работать, поскольку настроенные страницы сайта находятся в базе данных и выполняются в режиме asp.net «без компиляции».

Итог - вы можете написать aspx-страницы со встроенным кодом. Единственная проблема - с настроенными страницами сайта ... которые больше не будут заботиться о вашем встроенном коде.

7 голосов
/ 19 февраля 2009

да, на вашей странице aspx есть тег script с 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>
<% } %>
3 голосов
/ 19 февраля 2009

Я думал, что вы можете развернуть только свою страницу .aspx без .aspx.cs, пока DLL находится в вашей корзине. Частично проблема заключается в том, как visual studio .net работает со страницами .aspx.

Проверьте это здесь: Работа с однофайловыми страницами веб-форм в Visual Studio .NET

Я точно знаю, что в VS2008 с asp.net MVC RC у вас нет файлов с выделенным кодом для ваших представлений.

2 голосов
/ 09 февраля 2017

Файл: 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
...