Fun with ASP.Net Controls inside MVC app
Dont want to start at very basics...
Do you have a MVC view (say index.chtml)page where your out put is minimally
<h2>Name: @Model.FirstName</h2>
<h2>hi</h2><h2>Name: @Model.FirstName</h2>
<h2>hi</h2>
If Yes ... I will start here
File -> new -> create a class as below...
public class Myclass : Control
{
private string name { get; set; }
private string url { get; set; }
public Myclass(string aid,string aurl)
{
name = aid;
url = aurl;
}
protected override void Render(HtmlTextWriter writer)
{
writer.WriteLine("<a href=\"" + url + "\"align=\"left\" > " + name + " </a> ");
}
}
It is just a custom control that does rendering as required.
Now let me go to out index.chtml page.
@section header{
This message form top.
@GetMyOWNControl("hotmail", "http://www.hotmail.com")
@GetMyOWNControl("yahoo", "http://www.yahoo.com")
@GetMyOWNControl("janaganamana", "http://www.janaganamana.net")
}
@helper GetMyOWNControl(String iname, string iurl)
{
try
{
Page pageHolder = new System.Web.UI.Page();
System.Web.UI.WebControls.Panel p = new System.Web.UI.WebControls.Panel();
p.Controls.Add(new System.Web.UI.WebControls.HyperLink() { Text = iname, NavigateUrl = iurl });
p.Controls.Add(new PartyInvites.Myclass(iname, iurl));
pageHolder.Controls.Add(p);
using (StringWriter output = new StringWriter())
{
HttpContext.Current.Server.Execute(pageHolder, output, true);
var outputToReturn = output.ToString();//.Replace("\"", "\\\"").Replace("\r", " ").Replace("\n", " ").Replace("\t", " ");
@(new HtmlString(outputToReturn))
// @Html.Raw(outputToReturn)
}
}catch (Exception){}
}
may be i unnecessarily complicated it adding sections
your layout(/master page) may have
<div id="main">
<div id="header">
@RenderSection("header", false)
</div>
<h2>
gala gala</h2>
@RenderBody()
<div id="footer">
@RenderSection("footer", false)
</div>
</div>
Hilighted is the one that calls "@section header "
remember you can add any control into this panel...
p.Controls.Add(new Myclass(iname, iurl));
now you can use any of your ASP.NET controls. -- Happy coding...