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 = HttpContext.Current.Request[i.Name];
                    if (requestValue == null) {
                        continue;
                    }
                    else {
                        var propertyValue = 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; }
    }
}

 

 

WebPages 扩展,布布扣,bubuko.com

WebPages 扩展

上一篇:关于db_block_size的理解和实验


下一篇:asp.net各种类型视频播放代码(全)