首页 > 代码库 > WebPages 扩展

WebPages 扩展

终于被asp.net Mvc的目录结构搞晕了。

还在它用不过是因为 ActionResult 的参数可以传一个自定义类型,不用 Request[key] 一个个赋值。

现在搞出 webpage 的 InitModel(初始化一个自定义类型)。

using Newtonsoft.Json;using System;using System.Web;using System.Web.WebPages;namespace FDOA.Webpages.Common {    public static class WebPagesExtend {        public static T InitModel<T>(this WebPage webPages) where T : new() {            return InitModel(webPages, new T());        }        public static T InitModel<T>(this WebPage webPages,T theClass){            var tempClassType = typeof(T);            var tempClassProperties = tempClassType.GetProperties();            foreach (var i in tempClassProperties) {                try {                    var requestValue =http://www.mamicode.com/ HttpContext.Current.Request[i.Name];                    if (requestValue =http://www.mamicode.com/= null) {                        continue;                    }                    else {                        var propertyValue =http://www.mamicode.com/ Convert.ChangeType(requestValue, i.PropertyType);                        i.SetValue(theClass, propertyValue, null);                    }                }                catch { }            }            return theClass;        }        public static HtmlString ToJson(this object obj) {            var result = JsonConvert.SerializeObject(obj);            return new HtmlString(result);        }    }}


调用:http://localhost/Default?age=132

@{    var model1 = this.InitModel<UserInfo>();        var model2 = this.InitModel(new UserInfo() {        // 如果 Request["userid"] == null 则赋值        UserId="default" ,        // 如果 Request["IsLocked"] == null 则赋值        IsLocked = true     });}@model1.ToJson()@model2.ToJson()@functions{    private class UserInfo {        public string UserId { get; set; }        public int Age { get; set; }        public bool IsLocked { get; set; }    }}