public class HomeController : Controller
{
public ActionResult Index()
{
return View(
new
{
Message = "Welcome to ASP.NET MVC!" ,
Date = DateTime .Now
});
}
}
* This source code was highlighted with Source Code Highlighter .
ViewData[ "Message" ] = "Welcome to ASP.NET MVC!" ;
ViewData[ "Date" ] = DateTime .Now;
return View();
* This source code was highlighted with Source Code Highlighter .
Inherits= "System.Web.Mvc.ViewPage<dynamic>"
* This source code was highlighted with Source Code Highlighter .
< asp:Content ID ="indexContent" ContentPlaceHolderID ="MainContent" runat ="server" >
< h2 > <% = Model.Message %> </ h2 >
< p >
The date is <% = Model.Date %>
</ p >
</ asp:Content >
* This source code was highlighted with Source Code Highlighter .
public class DynamicViewPage : ViewPage {
// dynamic
public new dynamic Model { get ; private set ; }
protected override void SetViewData(ViewDataDictionary viewData) {
base .SetViewData(viewData);
// , private
Model = new ReflectionDynamicObject() { RealObject = ViewData.Model };
}
class ReflectionDynamicObject : DynamicObject {
internal object RealObject { get ; set ; }
public override bool TryGetMember(GetMemberBinder binder, out object result) {
//
result = RealObject.GetType().InvokeMember(
binder.Name,
BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
null ,
RealObject,
null );
// true, InvokeMember , -
return true ;
}
}
}
* This source code was highlighted with Source Code Highlighter .
Source: https://habr.com/ru/post/79363/
All Articles