2009-02-19 7 views
56

J'ai une page ASP.Net avec un code C# derrière.page ASP.net sans un code derrière

Cependant, il m'a été demandé de ne pas utiliser de code - de sorte qu'il sera plus facile à déployer dans SharePoint.

Y at-il un moyen d'inclure le code C# dans la page ASP.Net, sans utiliser de code séparé derrière le fichier?

Répondre

83

Par Le Sharepoint par défaut n'autorise pas l'exécution du code côté serveur dans les fichiers ASPX. See this pour savoir comment résoudre ce problème.

Cependant, je soulèverais qu'avoir un code-behind n'est pas nécessairement difficile à déployer dans Sharepoint (nous le faisons intensivement) - compilez simplement vos classes code-behind dans un assembly et déployez-le en utilisant solution.

Si toujours pas, vous pouvez inclure tout le code que vous auriez normalement lieu dans un codebehind comme ceci:

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

Merci :) Ceci est la première fois que nous avons vraiment dû utiliser Sharepoint ici, je ne savais pas si cela était en fait correcte. – Sophia

+9

Je tiens à souligner à nouveau l'argument de Rex M selon lequel vous devriez sérieusement envisager d'utiliser le code derrière les assemblages et de les déployer dans les fichiers de solution plutôt que de relâcher la sécurité des SharePoints dans le cas d'un déploiement plus facile. C'est la meilleure pratique et est en fait plutôt simple avec des fichiers de solution. – webwires

+0

@RexM Existe-t-il une possibilité de développer un projet ASP.NET sans utiliser C#? – FaizanRabbani

19

Vous pouvez réellement avoir tout le code dans la page ASPX. Comme expliqué here.

Echantillon de 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

oui sur votre page ASPX inclure une balise de script avec runat = server

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

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

Vous pouvez également utiliser ASP classique Syntaxe

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

Je pensais que vous pouvez déployer seulement votre page .aspx sans les .aspx.cs si longtemps comme la DLL était dans votre bac. Une partie du problème ici est de savoir comment visual studio .net fonctionne avec les pages .aspx.

Check it out ici: Working with Single-File Web Forms Pages in Visual Studio .NET

Je sais pour sûr que VS2008 avec asp.net MVC RC vous ne disposez pas des fichiers de code-behind pour votre point de vue.

7

Il existe deux types de pages très différents dans SharePoint: Pages d'application et Pages de site.

Si vous souhaitez utiliser votre page en tant que page d'application, vous pouvez utiliser en toute sécurité le code ou le code en ligne sur votre page, car les pages d'application se trouvent sur le système de fichiers.

S'il s'agit d'une page de site, vous pouvez écrire du code en ligne en toute sécurité tant que vous l'avez dans le déploiement initial. Toutefois, si la page de votre site doit être personnalisée à un moment ultérieur, le code en ligne ne fonctionnera plus car les pages de site personnalisées résident dans la base de données et sont exécutées dans le mode «non compilé» d'asp.net.

La ligne inférieure est - vous pouvez écrire des pages aspx avec du code en ligne. Le seul problème est avec les pages Site personnalisées ... qui ne s'occuperont plus de votre code en ligne.

2

fichier: 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 
Questions connexes