c# - How to create and add asp.net page programmatically to Asp.net project? -


i working on project cms creating pages dynamically using html editor .my achievement have created html page problem stuck point how create asp.net page using c# , assigning master page 2 major problems.

1-the page created in directory current , not open on local host or domain shows not part of project.

2-how create asp.net page using master page programaticaly in body tag add created html page located in current directory.

so tell me how should create asp.net page , make part of project , assign master page here code how creating html page in current directory

        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()); 

but thinking assign inner content newly created asp.net page using c# linked master page , make part of project mean open in domain too

t4 old asp pages. think on script php or asp on visual basic <% %> things. create "output". output can anyhing. however, have access project, can make use of info on classes. asume have experience on doing so, on scripting language.

you should follow tutorials @ :

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

ok, let's go.

when create new project, have a model, view , controller's directory (plus others). first create little class inside model:

public class carsmodel {   public string brand {get;set;}   public string model {get;set;}   [display(name="kilometers per hour")]   public double speed {get;set;} } 

enter there , open homecontroller. add new method:

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); } 

now, compile. right-click on mylist() , select "add view" (usually first or second option on context menu). fill shown (mine in spanish, sure clear database context)

enter image description here

click ok. t4 create view you. great, right?

let's see how works.

on project, create [ codetemplates ] folder on web project's root. inside create folder, [ mvcview ]. should end [ codetemplates\mvcview ].

now copy microsoft's default templates can play them.

open [ "c:\program files (x86)\microsoft visual studio 14.0\common7\ide\extensions\microsoft\web\mvc\scaffolding\templates\mvcview" ] in explorer. shouls see list of files:

default t4 directory copy files project, in folder created ([codetemplates\mvcview])

you can automate code creation, html, cshtml, txt... want. show how "list" works.

open "list.cs.t4" inside project. if modify wrong, can copy on original file.

everything between <# #> code , executed or evaluated.

let's check lines. line numbers may vary little.

<#@ template language="c#" hostspecific="true" #> <#@ output extension=".cshtml" #> <#@ include file="imports.include.t4" #> @model ienumerable<#= "<" + viewdatatypename + ">" #> 

first one: use c# scriptoing (no vb) second one: extension. it's clear, right? third one: there routins use: include them (imports.include.t4 in same directory) fourth one: writes following file:

@model ienumerable **someggeneratedcode** 

somegeneratedcode <#= "<" + viewdatatypename + ">" #>. says: write "<" + name of view type (carsmodel) + ">", or [< carsmodel >] so, writes

@model ienumerable<carsmodel> 

so, it's mvc model view. nice, right?

now, let's move ahead.

<# // following chained if-statement outputs file header code , markup partial view, view using layout page, or regular view. if(ispartialview) { #>  <# } else if(islayoutpageselected) { #> // generated code page layout (which taken "add view" dialog) 

around line 40 have

<title><#= viewname #></title> 

the [<#= ] classic asp. menas "write result here", ie, viewname variable, taken dialog also.

line 48:

@html.actionlink("create new", "create") 

you can change stuff, me. example,

@html.actionlink("nuevo", "create", { id = viewbag.parentid }, new { @class = "btn btn-xs" }) 

that create different link, in spanish, bootstrap css button , id route parameter, in case child view :). no t4 in group, hard code personalisation!

next lines, 53-56, can guess doing. searches "primary key". our model don't have it, skipped.

line 74: writing < td > < /td > inside table.

i "indent" you.

@foreach (var item in model) {         <tr>     <#     foreach (propertymetadata property in properties) {         if (property.scaffold && !property.isprimarykey && !property.isforeignkey) {     #>         <#                 // not want show association properties there                 // no associated foreign key.                 if (property.isassociation && getrelatedmodelmetadata(property) == null) {                     continue;                 }         #>                 <td>                     @html.displayfor(modelitem => <#= "item." + getvalueexpression(property) #>)                 </td>         <#         }     }     .... more code ...     </tr> } 

so, here goes on properties of our model , creates row header each member. if see, between <# #> goes code , between <#= #> goes "write" or output. on line 88:

html.displayfor(modelitem => <#= "item." + getvalueexpression(property) #>) 

so, let's writing "speed" column. write

html.displayfor(modelitem => item.speed) 

i hope it's enough starting. add new t4 directory in web app (mvcviews) , available new template in "add new view" dialog. can automate of tedious work.

t4's difficult debug, make small changes every time , test. there t4 editor syntax helpers visual studio:

tangible syntax highlight devart editor

i used tangible try devart.

tell me how do.


Comments