Patrick A. Lorenz, Autor diverser .NET-Bücher, veröffentlich auf seiner Seite in loser Folge interessante Artikel zu verschiedenen Bereichen der .NET-Programmierung.
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Stellen Sie sich folgende Situation vor: Sie haben einen SQL-String, der mehrere Parameter entgegennehmen soll. Dazu müßten Sie den String normalerweise mittels
StrSQL = "INSERT INTO myTable (myField1, myField2) VALUES ('" + txt_Field1.Text + "', '" + txt_Field2.Text + "')";
erzeugen.
C# stellt Ihnen aber auch noch eine weitere Möglichkeit zur Verfügung:
string.Format("INSERT INTO myTable (myField1, myField2) VALUES ({0},{1})",txt_Field1.Text, txt_Field2.Text);
Die Format-Methode ersetzt hierbei die Indezes in den geschweiften Klammern durch die Strings, die im Anschluß an den ersten String folgen. Damit haben Sie die Möglichkeit, einen Replace über mehrere Variablen in einem String durchzuführen.
Den kompletten Quellcode finden Sie wie üblich hier.
Das Beispiel dazu findet sich hier.
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Ab sofort können Sie den SourceCode zu den hier vorgestellten Beispiel herunterladen.
Den Download finden Sie hier
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Das .NET-Framework stellt umfangreiche Möglichkeiten zur String-Formatting bereit, allerdings hat die ASP-NET-Liste und die eigenen Erfahrungen gezeigt, daß die Informationen hierzu nicht unbedingt leicht zu finden sind. Deshalb hier meine gesammelten Infos in aller Kürze:
Strings formatieren mit C#
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Heute und in den nächsten Tage gibt es keine Einträge, da ich an einem größeren Eintrag zum Thema Page-Templates in ASP.NET arbeite, welcher in Kürze hier erscheinen wird.
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
XML erfreut sich immer größter Beliebtheit und Verbreitung. Auch das .NET-Framework unterstützt XML per default. Das Lesen und Schreiben von XML-Dateien stellt somit auch kein großes Problem dar, wie der nachfolgende Code zeigen wird.
Wie bei den Beiträgen der letzten Tage gibt es auch heute wieder ein Beispiel: XML-Dateien lesen und schreiben mit ASP.NET
Der Code der aspx-Datei beinhaltet keine Besonderheit, eine ListBox, die die Einträge darstellt sowie eine TextBox und ein Button zur Erfassung der neuen Einträge für die ListBox:
|
|
|
| 1: |
<form id="Form1" method="post" runat="server"> |
| 2: |
<asp:ListBox id="LBXWebsites" |
| 3: |
style="Z-INDEX: 101; LEFT: 24px; POSITION: absolute; TOP: 64px" |
| 4: |
runat="server" |
| 5: |
DataTextField="Website" |
| 6: |
DataValueField="WebsiteID"> |
| 7: |
</asp:ListBox> |
| 8: |
<asp:TextBox id="TextBox1" |
| 9: |
style="Z-INDEX: 102; LEFT: 24px; POSITION: absolute; TOP: 200px" |
| 10: |
runat="server" |
| 11: |
Width="167px"> |
| 12: |
</asp:TextBox> |
| 13: |
<asp:Label id="Label1" |
| 14: |
style="Z-INDEX: 103; LEFT: 24px; POSITION: absolute; TOP: 24px" |
| 15: |
runat="server" |
| 16: |
Width="400px" |
| 17: |
Font-Bold="True">XML-Dateien lesen und schreiben mit ASP.NET |
| 18: |
</asp:Label> |
| 19: |
<asp:Label id="Label2" |
| 20: |
style="Z-INDEX: 104; LEFT: 24px; POSITION: absolute; TOP: 176px" |
| 21: |
runat="server" |
| 22: |
Width="120px">neue Website: |
| 23: |
</asp:Label> |
| 24: |
<asp:Button id="Button1" |
| 25: |
style="Z-INDEX: 105; LEFT: 200px; POSITION: absolute; TOP: 200px" |
| 26: |
runat="server" |
| 27: |
Width="80px" |
| 28: |
Text="hinzufügen"> |
| 29: |
</asp:Button> |
| 30: |
</form> |
Die zugehörige Code-Behind-Datei:
|
|
|
| 1: |
public class _default : System.Web.UI.Page |
| 2: |
{ |
| 3: |
protected System.Web.UI.WebControls.ListBox LBXWebsites; |
| 4: |
protected System.Web.UI.WebControls.TextBox TextBox1; |
| 5: |
protected System.Web.UI.WebControls.Label Label1; |
| 6: |
protected System.Web.UI.WebControls.Label Label2; |
| 7: |
protected System.Web.UI.WebControls.Button Button1; |
| 8: |
protected System.Data.DataSet dataSet1; |
| 9: |
protected System.Data.DataSet myDataSet = new DataSet(); |
| 10: |
|
| 11: |
private void Page_Load(object sender, System.EventArgs e) |
| 12: |
{ |
| 13: |
myDataSet = readDataFromXML(); |
| 14: |
LBXWebsites.DataSource = myDataSet; |
| 15: |
LBXWebsites.DataBind(); |
| 16: |
} |
| 17: |
|
| 18: |
private DataSet readDataFromXML() |
| 19: |
{ |
| 20: |
DataSet readDataSet = new DataSet(); |
| 21: |
readDataSet.ReadXml(Server.MapPath("data.xml")); |
| 22: |
return readDataSet; |
| 23: |
} |
| 24: |
|
| 25: |
private void writeDataToXML(DataSet dataToWrite) |
| 26: |
{ |
| 27: |
dataToWrite.WriteXml(Server.MapPath("data.xml")); |
| 28: |
} |
| 29: |
|
| 30: |
private void Button1_Click(object sender, System.EventArgs e) |
| 31: |
{ |
| 32: |
DataView dv = new DataView(myDataSet.Tables[0]); |
| 33: |
dv.Sort = "WebsiteID DESC"; |
| 34: |
DataRow mydr = myDataSet.Tables[0].NewRow(); |
| 35: |
mydr[0] = int.Parse(dv[0][0].ToString())+1; |
| 36: |
mydr[1] = TextBox1.Text; |
| 37: |
myDataSet.Tables[0].Rows.Add(mydr); |
| 38: |
writeDataToXML(myDataSet); |
| 39: |
LBXWebsites.DataSource = readDataFromXML(); |
| 40: |
LBXWebsites.DataBind(); |
| 41: |
} |
| 42: |
} |
Das Lesen der XML-Daten geschieht in der Methode readDataFromXML() und zeigt, wie einfach das Auslesen von XML-Dateien in ASP.NET ist: Nach dem Erzeugen eines DataSets muß nur noch dessen Methode ReadXML(), gefolgt vom Pfad zur zu lesenden XML-Datei, aufgerufen werden.
Das Schreiben der XML-Daten ist in der Methode writeDataToXML gekapselt und gestaltet sich noch einfacher. Das DataSet mit den zu schreibenden Daten wird an die Methode WriteXML() übergeben. Außerdem übergibt man auch den Namen der XML-Datei.
That's it!
Der Ordnung halber habe ich noch eine Funktion implementiert, die die WebsiteID in der XML-Datei wie einen Autowert in einer Datenbank-Tabelle beim Schreiben erzeugt.
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Möchte man WebControls z.B. in Abhängigkeit von der Auswahl in einer DropDownList zur Laufzeit erzeugen, gibt es eine einfache Möglichkeit: man verwendet einen sog. PlaceHolder. Dieser fungiert als Platzhalter an der Stelle, an der später das entsprechende Control dynamisch erzeugt werden soll.
Zur Verdeutlichung des Ziels finden Sie hier ein Beispiel: Beispiel zur dynamischen Erzeugung von WebControls
Der Code der aspx-Datei sieht wie folgt aus:
|
|
|
| 1: |
<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="BlogSamples.DynamicControls._default" %> |
| 2: |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
| 3: |
<HTML> |
| 4: |
<HEAD> |
| 5: |
<title>default</title> |
| 6: |
<meta name="vs_snapToGrid" content="False"> |
| 7: |
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> |
| 8: |
<meta name="CODE_LANGUAGE" Content="C#"> |
| 9: |
<meta name="vs_defaultClientScript" content="JavaScript"> |
| 10: |
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> |
| 11: |
</HEAD> |
| 12: |
<body MS_POSITIONING="GridLayout"> |
| 13: |
<form id="Form1" method="post" runat="server"> |
| 14: |
<asp:DropDownList id="DropDownList1"# |
| 15: |
style="Z-INDEX: 101; LEFT: 24px; POSITION: absolute; TOP: 120px" |
| 16: |
runat="server"> |
| 17: |
</asp:DropDownList> |
| 18: |
<asp:Label id="Label1" |
| 19: |
style="Z-INDEX: 102; LEFT: 24px; POSITION: absolute; TOP: 32px" |
| 20: |
runat="server" |
| 21: |
Width="376px" |
| 22: |
Font-Bold="True">Beispiel zur dynamischen Erzeugung von WebControls |
| 23: |
</asp:Label> |
| 24: |
<asp:Label id="Label2" |
| 25: |
style="Z-INDEX: 103; LEFT: 24px; POSITION: absolute; TOP: 72px" |
| 26: |
runat="server" |
| 27: |
Width="579px" |
| 28: |
Height="24px">Bitte wählen Sie ein WebControl in der DropDownList aus und klicken Sie auf den Button. |
| 29: |
</asp:Label> |
| 30: |
<asp:Button id="Button1" |
| 31: |
style="Z-INDEX: 104; LEFT: 200px; POSITION: absolute; TOP: 120px" |
| 32: |
runat="server" |
| 33: |
Width="48px" |
| 34: |
Height="24px" |
| 35: |
Text="Button"> |
| 36: |
</asp:Button> |
| 37: |
<table style="Z-INDEX: 104; LEFT: 24px; POSITION: absolute; TOP: 150px" |
| 38: |
cellpadding="0" |
| 39: |
cellspacing="0"> |
| 40: |
<tr> |
| 41: |
<td> |
| 42: |
<asp:PlaceHolder id="PlaceHolder1" |
| 43: |
runat="server"> |
| 44: |
</asp:PlaceHolder> |
| 45: |
</td> |
| 46: |
</tr> |
| 47: |
</table> |
| 48: |
</form> |
| 49: |
</body> |
| 50: |
</HTML> |
Der Code der zugehörigen CodeBehind-Datei:
|
|
|
| 1: |
public class _default : System.Web.UI.Page |
| 2: |
{ |
| 3: |
protected System.Web.UI.WebControls.DropDownList DropDownList1; |
| 4: |
protected System.Web.UI.WebControls.Label Label1; |
| 5: |
protected System.Web.UI.WebControls.Label Label2; |
| 6: |
protected System.Web.UI.WebControls.Button Button1; |
| 7: |
protected System.Web.UI.WebControls.PlaceHolder PlaceHolder1; |
| 8: |
ICollection CreateDataSource() |
| 9: |
{ |
| 10: |
DataTable dt = new DataTable(); |
| 11: |
DataRow dr1; |
| 12: |
DataRow dr2; |
| 13: |
DataRow dr3; |
| 14: |
|
| 15: |
dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32))); |
| 16: |
dt.Columns.Add(new DataColumn("ControlType", typeof(string))); |
| 17: |
|
| 18: |
dr1 = dt.NewRow(); |
| 19: |
dr1[0] = 1; |
| 20: |
dr1[1] = "DropDownList"; |
| 21: |
|
| 22: |
dr2 = dt.NewRow(); |
| 23: |
dr2[0] = 2; |
| 24: |
dr2[1] = "Label"; |
| 25: |
|
| 26: |
dt.Rows.Add(dr1); |
| 27: |
dt.Rows.Add(dr2); |
| 28: |
|
| 29: |
DataView dv = new DataView(dt); |
| 30: |
return dv; |
| 31: |
} |
| 32: |
|
| 33: |
private void Page_Load(object sender, System.EventArgs e) |
| 34: |
{ |
| 35: |
if(!IsPostBack) |
| 36: |
{ |
| 37: |
DropDownList1.DataSource = CreateDataSource(); |
| 38: |
DropDownList1.DataTextField = "ControlType"; |
| 39: |
DropDownList1.DataValueField = "IntegerValue"; |
| 40: |
DropDownList1.DataBind(); |
| 41: |
} |
| 42: |
} |
| 43: |
|
| 44: |
private void Button1_Click(object sender, System.EventArgs e) |
| 45: |
{ |
| 46: |
switch(int.Parse(DropDownList1.Items[DropDownList1.SelectedIndex].Value.ToString())) |
| 47: |
{ |
| 48: |
case 1: |
| 49: |
PlaceHolder1.Controls.Clear(); |
| 50: |
DropDownList DDLDynamic = new DropDownList(); |
| 51: |
DDLDynamic.DataSource = CreateDataSource(); |
| 52: |
DDLDynamic.DataTextField = "ControlType"; |
| 53: |
DDLDynamic.DataValueField = "IntegerValue"; |
| 54: |
DDLDynamic.DataBind(); |
| 55: |
PlaceHolder1.Controls.Add(DDLDynamic); |
| 56: |
break; |
| 57: |
case 2: |
| 58: |
PlaceHolder1.Controls.Clear(); |
| 59: |
Label LBLDynamic = new Label(); |
| 60: |
LBLDynamic.Text = "Hello World! - dynamisch erzeugt"; |
| 61: |
PlaceHolder1.Controls.Add(LBLDynamic); |
| 62: |
break; |
| 63: |
} |
| 64: |
} |
| 65: |
} |
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Manchmal muß man auf die Eingabe in einer TextBox bereits bei der Eingabe reagieren. Für dieses Zweck stellt das .NET-Framework den Eventhandler .TextChanged zur Verfügung. Allerdings funktioniert der Eventhandler nicht "as is". Für die zu überwachende TextBox muß zusätzlich AutoPostBack aktiviert werden. Außerdem muß die TextBox nach der Eingabe verlassen werden (z.B. durch Drücken der TAB-Taste). Eine zeitnahe Reaktion auf die Eingabe ist also nicht möglich.
Ein Beispiel hierfür finden Sie hier: TextChanged Beispiel mit .NET-Bordmitteln
Der SourceCode sieht wie folgt aus:
dotnet.aspx:
|
|
|
| 1: |
<%@ Page language="c#" Codebehind="dotnet.aspx.cs" AutoEventWireup="false" Inherits="BlogSamples.onTextChange.dotnet" %> |
| 2: |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
| 3: |
<HTML> |
| 4: |
<HEAD> |
| 5: |
<meta name="vs_snapToGrid" content="True"> |
| 6: |
<title>default</title> |
| 7: |
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> |
| 8: |
<meta name="CODE_LANGUAGE" Content="C#"> |
| 9: |
<meta name="vs_defaultClientScript" content="JavaScript"> |
| 10: |
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> |
| 11: |
</HEAD> |
| 12: |
<body MS_POSITIONING="GridLayout"> |
| 13: |
<form id="Form1" method="post" runat="server"> |
| 14: |
<asp:TextBox id="TextBox1" |
| 15: |
style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 88px" |
| 16: |
runat="server" |
| 17: |
AutoPostBack="True"> |
| 18: |
</asp:TextBox> |
| 19: |
<asp:Label id="Label1" |
| 20: |
style="Z-INDEX: 102; LEFT: 32px; POSITION: absolute; TOP: 64px" |
| 21: |
runat="server" |
| 22: |
Width="512px"> |
| 23: |
Bitte geben Sie einen Text ein und drücken Sie nach Ihrer Eingabe die TAB-Taste |
| 24: |
</asp:Label> |
| 25: |
<asp:Label id="Label2" |
| 26: |
style="Z-INDEX: 103; LEFT: 32px; POSITION: absolute; TOP: 120px" |
| 27: |
runat="server" |
| 28: |
Width="146px"> |
| 29: |
Ihre Eingabe bisher: |
| 30: |
</asp:Label> |
| 31: |
<asp:Label id="Label3" |
| 32: |
style="Z-INDEX: 104; LEFT: 32px; POSITION: absolute; TOP: 144px" |
| 33: |
runat="server" |
| 34: |
Width="197px" |
| 35: |
ForeColor="Blue"> |
| 36: |
</asp:Label> |
| 37: |
<asp:Label id="Label4" |
| 38: |
style="Z-INDEX: 105; LEFT: 32px; POSITION: absolute; TOP: 24px" |
| 39: |
runat="server" |
| 40: |
Width="344px" |
| 41: |
Font-Bold="True"> |
| 42: |
TextChanged Beispiel mit .NET-Bordmitteln |
| 43: |
</asp:Label> |
| 44: |
<asp:Label id="Label5" |
| 45: |
style="Z-INDEX: 106; LEFT: 32px; POSITION: absolute; TOP: 184px" |
| 46: |
runat="server">PostBack ausgelöst: |
| 47: |
</asp:Label> |
| 48: |
<asp:Label id="Label6" |
| 49: |
style="Z-INDEX: 107; LEFT: 168px; POSITION: absolute; TOP: 184px" |
| 50: |
runat="server" |
| 51: |
Width="56px" |
| 52: |
Font-Bold="True" |
| 53: |
ForeColor="DarkRed"> |
| 54: |
</asp:Label> |
| 55: |
</form> |
| 56: |
</body> |
| 57: |
</HTML>
|
dotnet.aspx.cs:
|
|
|
| 1: |
public class dotnet : System.Web.UI.Page |
| 2: |
{ |
| 3: |
protected System.Web.UI.WebControls.TextBox TextBox1; |
| 4: |
protected System.Web.UI.WebControls.Label Label1; |
| 5: |
protected System.Web.UI.WebControls.Label Label2; |
| 6: |
protected System.Web.UI.WebControls.Label Label4; |
| 7: |
protected System.Web.UI.WebControls.Label Label5; |
| 8: |
protected System.Web.UI.WebControls.Label Label6; |
| 9: |
protected System.Web.UI.WebControls.Label Label3; |
| 10: |
|
| 11: |
private void Page_Load(object sender, System.EventArgs e) |
| 12: |
{ |
| 13: |
if(!IsPostBack) |
| 14: |
{ |
| 15: |
Label6.Text="nein"; |
| 16: |
} |
| 17: |
else |
| 18: |
{ |
| 19: |
Label6.Text="ja"; |
| 20: |
} |
| 21: |
} |
| 22: |
|
| 23: |
private void TextBox1_TextChanged(object sender, System.EventArgs e) |
| 24: |
{ |
| 25: |
Label3.Text=TextBox1.Text; |
| 26: |
} |
| 27: |
} |
Abhilfe schafft hier die Verwendung von Javascript. Dieses lässt sich leicht mittels WebControls.Attributes.Add(key, valuestring) injizieren. Damit kann bei jedem erfassten oder gelöschten Zeichen in der TextBox ohne PostBack sofort auf die Eingabe reagiert wrden.
Das Beispiel findet sich hier: TextChanged Beispiel mit JavaScript
Der Code der aspx-Datei ist bis auf die Aktivierung von AutoPostBack identisch mit dem vorangegangenen Beispiel, der Code der javascript.cs sieht wie folgt aus:
|
|
|
| 1: |
public class _default : System.Web.UI.Page |
| 2: |
{ |
| 3: |
protected System.Web.UI.WebControls.TextBox TextBox1; |
| 4: |
protected System.Web.UI.WebControls.Label Label1; |
| 5: |
protected System.Web.UI.WebControls.Label Label2; |
| 6: |
protected System.Web.UI.WebControls.Label Label4; |
| 7: |
protected System.Web.UI.WebControls.Label Label5; |
| 8: |
protected System.Web.UI.WebControls.Label Label6; |
| 9: |
protected System.Web.UI.WebControls.Label Label3; |
| 10: |
|
| 11: |
private void Page_Load(object sender, System.EventArgs e) |
| 12: |
{ |
| 13: |
TextBox1.Attributes.Add("onKeydown","Label3.innerText=TextBox1.value"); |
| 14: |
if(!IsPostBack) |
| 15: |
{ |
| 16: |
Label6.Text="nein"; |
| 17: |
} |
| 18: |
else |
| 19: |
{ |
| 20: |
Label6.Text="ja"; |
| 21: |
} |
| 22: |
} |
| 23: |
} |
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Aus Zeitmangel gibts heute nur einen einfachen Quicky zum Thema ASP.NET:
Das Problem: Der Focus, sprich Cursor soll beim Laden der Seite und nach dem Klick auf einen Button, auf ein bestimmtes Element der Seite springen.
Zur Verdeutlichung gibt's auch heute wieder ein Sample.
Der Code ähnelt sehr stark dem normalen HTML/Javascript:
|
|
|
| 1: |
<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="BlogSamples.FocusSample._default" %> |
| 2: |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
| 3: |
<HTML> |
| 4: |
<HEAD> |
| 5: |
<title>Focus Sample</title> |
| 6: |
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> |
| 7: |
<meta name="CODE_LANGUAGE" Content="C#"> |
| 8: |
<meta name="vs_defaultClientScript" content="JavaScript"> |
| 9: |
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> |
| 10: |
</HEAD> |
| 11: |
<script language=javascript> |
| 12: |
function Nothing_Clicked() |
| 13: |
{ document.all('txtInput1').focus(); |
| 14: |
return false; |
| 15: |
} |
| 16: |
function cmdButton1_Clicked() |
| 17: |
{ document.all('txtInput2').focus(); |
| 18: |
return false; |
| 19: |
} |
| 20: |
|
| 21: |
function cmdButton2_Clicked() |
| 22: |
{ document.all('txtInput3').focus(); |
| 23: |
return false; |
| 24: |
} |
| 25: |
</script> |
| 26: |
<body MS_POSITIONING="GridLayout" onload="return Nothing_Clicked()"> |
| 27: |
<form id="Form1" method="post" runat="server"> |
| 28: |
TextBox 1: |
| 29: |
<asp:TextBox ID="txtInput1" Runat="server" Width="50" /> (Focus beim Laden der Seite) |
| 30: |
<br> |
| 31: |
TextBox 2: |
| 32: |
<asp:TextBox ID="txtInput2" Runat="server" Width="50" /> |
| 33: |
<br> |
| 34: |
TextBox 3: |
| 35: |
<asp:TextBox ID="txtInput3" Runat="server" Width="50" /> |
| 36: |
<br> |
| 37: |
<br> |
| 38: |
Klicken Sie bitte auf einen der Buttons, um den Focus auf TextBox 2 oder 3 zu setzen:<br> |
| 39: |
<input ID="cmdButton1" type="button" value="Focus auf TextBox 2" OnClick="return cmdButton1_Clicked()"> |
| 40: |
<input ID="cmdButton2" type="button" value="Focus auf TextBox 3" OnClick="return cmdButton2_Clicked()"> |
| 41: |
</form> |
| 42: |
</body> |
| 43: |
</HTML> |
Wichtig: Arbeiten Sie mit CodeBehind, muß das Projekt dennoch compiliert werden, damit der Code funktioniert!
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
VisualStudio.NET trennt bei der Erstellung von ASP.NET-Webapplikationen die Projektdateien (.sln etc.) und die eigentlichen Klassen-, WebForm- und sonstige Dateien in verschiedene Verzeichnisse. Die Projektdateien werden unter Eigene Dateien\VisualStudio-Projekte gelegt, wohingegen die anderen genannten Dateien in einem Verzeichnis unterhalb des Standard-Web-Verzeichnisses (normalerweise C:\Inetpub\wwwroot\) abgelegt werden. Dies bringt einigen Aufwand mit sich, will man das Projekt komplett weiterzugeben, z.B. als ZIP-Datei oder innerhalb einer Versionsverwaltung.
Eine einfache Lösung soll hier vorgestellt werden.
Erstellen Sie zunächst in Ihrem VisualStudio-Projektverzeichnis einen Ordner für Ihr neues Projekt:

Starten Sie dann den IIS-Manager und erzeugen Sie ein neues virtuelles Verzeichnis:

Bestätigen Sie den Begrüßungsbildschirm und weitere Meldungen, bis Sie folgende Eingabemaske erreichen:

Geben Sie hier den Alias für Ihr Projekt ein und klicken Sie auf weiter. Klicken Sie im nächsten Schritt auf "Durchsuchen" und wählen Sie das eben angelegte Verzeichnis aus:

Klicken Sie auf OK und bestätigen Sie alle Meldungen bis zum Ende des Assistenten und beenden diesen.
Danach starten Sie VisualStudio.NET und erstellen ein neues Projekt. Als Projekt-Typ wählen Sie ASP.NET-Webanwendung und geben als Speicherort den Servernamen gefolgt von dem im IIS-Manager vergebenen Alias an. Danach klicken Sie auf ok und lassen VS.NET das Projekt erzeugen.

Wenn Sie nun wieder in das eingangs erzeugte Verzeichnis wechseln, sehen Sie, daß VisualStudio.NET nun alle Dateien dort abgelegt hat:
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5