2016-08-08 10 views
0

Ich arbeite an einem Projekt-CMS, wo ich Seiten dynamisch mit HTML-Editor erstellen. Mein Erfolg ist, dass ich HTML-Seite erfolgreich erstellt habe jetzt Problem ist, dass ich auf den Punkt, wie asp.net-Seite mit C# und zuweisen zu stecken es, um Seite 2 Hauptprobleme zu meistern.Wie ASP.net-Seite programmgesteuert zu ASP.net-Projekt erstellen und hinzufügen?

1-Die Seite, die im aktuellen Verzeichnis erstellt wurde und nicht auf dem lokalen Host oder in der Domäne geöffnet ist und anzeigt, dass es sich nicht um einen Teil des Projekts handelt.

2-Wie asp.net Seite mit Masterseite programaticaly zu erstellen, so dass in seinem body-Tag ich die erstellte HTML-Seite im aktuellen Verzeichnis befindet.

mich so sagen, wie soll ich asp.net Seite und machen es den Teil des Projekts zu und weisen Sie eine Master-Seite ist hier ein Code zu erstellen, wie ich HTML-Seite in dem aktuellen Verzeichnis

 string content = "<!DOCTYPE html><html><header><title>{MY_TITLE}</title></header><body>{body}</body></html>"; 

     List<string> lines = new List<string>(); 

     content = content.Replace("{MY_TITLE}", titleTextBox.Text); 
     string name = TextBox1.Text; 
     content = content.Replace("{body}", Editor2.Content); 
     lines.Add(content); 
     string nameP = seelctName(Convert.ToInt32(name)); 
     nameP = nameP.Replace(" ", ""); 
     File.WriteAllLines(AppDomain.CurrentDomain.BaseDirectory + "\\" + nameP + ".htm", lines.ToArray()); 

erschaffe Aber Ich denke, diesen inneren Inhalt neu zu erstellen asp.net-Seite mit C# mit Master-Seite verknüpft und machen es zu einem Teil des Projekts bedeutet, offen in der Domäne auch

+0

Wenn ich verstehe, was Sie brauchen, haben Sie versucht, es mit Vorlagen und T4 zu tun? Ist die Standardvorlagenengine von VS. Sie können Seiten, Controller und alles, was testbasiert ist, "programmieren". Ich benutze es, um Sprache und Look & Feel-Einstellungen zu automatisieren, sogar Raster-Erstellung (Ich automatisierte Telerik Kendo Grid Indexseite Erstellung). Einfach Rechtsklick-Neu machen. Geben Sie das eine Chance: https://msdn.microsoft.com/en-us/library/bb126445.aspx –

+0

Aber es gibt keine Hinweise dafür, wie BEGINEER starten und HTML oder ASP.NET-Seiten mit dieser Vorlage –

+0

Ich bin werde eine Antwort mit einigen Details hinzufügen, ok? –

Antwort

0

T4 ist wie alte ASP-Seiten. Denken Sie an ein Skript wie PHP oder Asp auf Visual Basic mit all diesen <%%> Dinge. Sie erstellen eine "Ausgabe". Als Ausgabe kann Anying sein. Sie haben jedoch Zugriff auf Ihr Projekt, sodass Sie Informationen zu Ihren Klassen verwenden können. Ich nehme an, Sie haben bereits Erfahrung damit, in jeder Skriptsprache.

Sie sollten wirklich die Tutorials folgen:

[https://msdn.microsoft.com/en-us/library/bb126445.aspx]

Ok, lass uns gehen.

Wenn Sie ein neues Projekt erstellen, haben Sie ein Modell, eine Ansicht und das Verzeichnis eines Controllers (plus andere). Zuerst ein wenig Klasse innerhalb Modell erstellen:

public class CarsModel 
{ 
    public string Brand {get;set;} 
    public string Model {get;set;} 
    [Display(Name="Kilometers per hour")] 
    public double Speed {get;Set;} 
} 

Geben Sie dort und offene Homecontroller. Fügen Sie eine neue Methode hinzu:

public ActionResult MyList() 
{ 
    List<CarsModel> myList = new List<CarsModel>(); 

    myList.Add(new CarsModel() { Brand = "Ford", Model = "F50", Speed = 150}); 
    myList.Add(new CarsModel() { Brand = "Lamborgini", Model = "Countach", Speed = 290}); 
    myList.Add(new CarsModel() { Brand = "Mattel", Model = "RedShadow", Speed = 5}); 

    return View(myList); 
} 

Jetzt kompilieren. Klicken Sie mit der rechten Maustaste auf MyList() und wählen Sie "Add View" (in der Regel die erste oder zweite Option im Kontextmenü). Füllen Sie es wie gezeigt (meine in Spanisch ist, aber sicher sein Datenbank-Kontext löschen)

enter image description here

Klicken Sie auf OK. T4 erstellt eine Ansicht für Sie. Großartig, oder?

Mal sehen, wie es funktioniert.

Erstellen Sie in Ihrem Projekt einen Ordner [CodeTemplates] im Stammverzeichnis Ihres Webprojekts. Innerhalb erstellen Sie einen anderen Ordner, [MvcView]. Sie sollten mit [CodeTemplates \ MvcView] enden.

Jetzt werden wir die Standardvorlagen von Microsoft kopieren, damit Sie mit ihnen spielen können.

Öffnen Sie ["C: \ Programme (X 86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Erweiterungen \ Microsoft \ Web \ Mvc \ Scaffolding \ Templates \ MvcView"] im Explorer.Sie shouls eine Liste von Dateien finden Sie unter:

Default t4 directory Kopieren Sie diese Dateien in das Projekt, in dem Ordner wir gerade erstellt ([CodeTemplates \ MvcView])

Sie können Code Erstellung automatisieren, html, cshtml, txt. .. alles was du willst. Ich zeige jetzt, wie "List" funktioniert.

Öffnen Sie "List.cs.t4" in Ihrem Projekt. Wenn Sie etwas falsch ändern, können Sie die Originaldatei kopieren.

Alles zwischen < # #> ist Code und wird ausgeführt oder ausgewertet.

Lassen Sie uns einige Zeilen überprüfen. Zeilennummern können ein wenig variieren.

<#@ template language="C#" HostSpecific="True" #> 
<#@ output extension=".cshtml" #> 
<#@ include file="Imports.include.t4" #> 
@model IEnumerable<#= "<" + ViewDataTypeName + ">" #> 

erste: Wir werden C# verwenden für scriptoing (keine vb) Zweite ein: Erweiterung. Es ist klar, oder? Dritte ein: Es gibt einige routins ich verwenden: Fügen Sie sie (Imports.include.t4 in demselben Verzeichnis) Vierte ein: Er schreibt folgendes in die Datei:

@Model IEnumerable **SomeGgeneratedCode** 

SomegeneratedCode ist < # =+ ViewDataTypeName +#. Sagt: Write "<" + der Name meiner Ansicht Typ (CarsModel) + ">" oder [< CarsModel>] So schreibt es

@Model IEnumerable<CarsModel> 

Also, es ist Ihr MVC-Modell für Ihre Ansicht. Nett, oder?

Jetzt gehen wir voran.

<# 
// The following chained if-statement outputs the file header code and markup for a partial view, a view using a layout page, or a regular view. 
if(IsPartialView) { 
#> 

<# 
} else if(IsLayoutPageSelected) { 
#> 
// Generated code for a page with a layout (which is taken from the "Add View" dialog) 

Strecken Linie 40 Sie haben

<title><#= ViewName #></title> 

Die [< # =] ist wie klassische ASP. Es heißt "write result here", also die Variable ViewName, die ebenfalls aus dem Dialog übernommen wird.

Linie 48:

@Html.ActionLink("Create New", "Create") 

Sie können ein paar Sachen ändern, wie ich. Zum Beispiel

@Html.ActionLink("Nuevo", "Create", { id = ViewBag.parentId }, new { @class = "btn btn-xs" }) 

, das eine andere Verbindung, in Spanischen schaffen, mit Bootstrap-CSS für eine Schaltfläche und eine ID für eine Route Parameter, falls dies ist ein Kind Blick :). Kein T4 in dieser Gruppe, sondern nur harte Code-Personalisierung!

Nächste Zeilen, 53-56, können Sie raten, was passiert. Es sucht nach einem "Primärschlüssel". Unser Modell hat es nicht, also wird übersprungen.

Zeile 74: schreibt < TD> </TD> innerhalb einer Tabelle.

Ich werde es für Sie einrücken.

@foreach (var item in Model) { 
     <tr> 
    <# 
    foreach (PropertyMetadata property in properties) { 
     if (property.Scaffold && !property.IsPrimaryKey && !property.IsForeignKey) { 
    #> 
     <# 
       // We do not want to show any association properties for which there is 
       // no associated foreign key. 
       if (property.IsAssociation && GetRelatedModelMetadata(property) == null) { 
        continue; 
       } 
     #> 
       <td> 
        @Html.DisplayFor(modelItem => <#= "item." + GetValueExpression(property) #>) 
       </td> 
     <# 
     } 
    } 
    .... more code ... 
    </tr> 
} 

Also, hier geht es über die Eigenschaften unseres Modells und erstellt einen Zeilenkopf für jedes Mitglied. Wenn Sie sehen, zwischen < # #> geht Code und zwischen < # = #> geht "schreiben" oder ausgeben. In Zeile 88:

Html.DisplayFor(modelItem => <#= "item." + GetValueExpression(property) #>) 

Also sagen wir, wir schreiben jetzt "Speed" -Spalte. Es wird schreiben

Html.DisplayFor(modelItem => item.Speed) 

Ich hoffe, es ist gut genug für den Start. Fügen Sie einfach ein neues T4 in dieses Verzeichnis in Ihrer Web-App (MvcViews) ein und es wird als neue Vorlage im Dialog "Neue Ansicht hinzufügen" verfügbar sein. Sie können die meiste langwierige Arbeit automatisieren.

T4's sind schwer zu debuggen, also machen Sie kleine Änderungen jedes Mal und testen Sie. Es gibt einige T4-Editor Syntax Helfer für Visual Studio:

Tangible syntax highlight Devart editor

ich Materielle aber jetzt werde ich versuchen, Devart.

Sag mir, wie es dir geht.

Verwandte Themen