一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 基于.NET中:自動將請求參數綁定到ASPX、ASHX和MVC的方法(菜鳥必看)

基于.NET中:自動將請求參數綁定到ASPX、ASHX和MVC的方法(菜鳥必看)

2019-11-05 10:53asp.net教程網 ASP.NET教程

這篇文章的目的就是告訴初學者如何自動將客戶端用AJAX發送的參數自動綁定為強類型的成員屬性或方法參數

前言

剛開始做AJAX應用的時候,經常要手工解析客戶端傳遞的參數,這個過程極其無聊,而且代碼中充斥著:Request["xxx"]之類的代碼。

這篇文章的目的就是告訴初學者如何自動將客戶端用AJAX發送的參數自動綁定為強類型的成員屬性或方法參數。

自動綁定到ASPX和ASHX

框架支持

復制代碼代碼如下:

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 namespace Happy.Web
 {
     public interface IWantAutoBindProperty
     {
     }
 }

 

復制代碼代碼如下:

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 namespace Happy.Web
 {
     [AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
     public sealed class AutoBind : Attribute
     {
     }
 }

 

復制代碼代碼如下:

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 using System.Web;

 using Newtonsoft.Json;

 using Happy.ExtensionMethods.Reflection;

 namespace Happy.Web
 {
     public class JsonBinderModule : IHttpModule
     {
         public void Init(HttpApplication context)
         {
             context.PreRequestHandlerExecute += OnPreRequestHandlerExecute;
         }

         private void OnPreRequestHandlerExecute(object sender, EventArgs e)
         {
             if (!(HttpContext.Current.CurrentHandler is IWantAutoBindProperty))
             {
                 return;
             }

             var properties = HttpContext.Current.CurrentHandler.GetType().GetProperties();

             foreach (var property in properties)
             {
                 if (!property.IsDefined(typeof(AutoBind), true))
                 {
                     continue;
                 }

                 string json = HttpContext.Current.Request[property.Name];

                 var value = JsonConvert.DeserializeObject(json, property.PropertyType);

                 property.SetValue(HttpContext.Current.Handler, value);
             }
         }

         public void Dispose()
         {
         }
     }
 }


代碼示例

復制代碼代碼如下:

<?xml version="1.0" encoding="utf-8"?>

 <configuration>

     <system.web>
       <compilation debug="false" targetFramework="4.0" />
       <httpModules>
         <add name="JsonBinderModule" type="Happy.Web.JsonBinderModule"/>
       </httpModules>
     </system.web>

 </configuration>

 

復制代碼代碼如下:

/// <reference path="../ext-all-debug-w-comments.js" />
 var data = {
     Name: '段光偉',
     Age: 28
 };

 Ext.Ajax.request({
     url: '../handlers/JsonBinderTest.ashx',
     method: 'POST',
     params: { user: Ext.encode(data) }
 });

 

復制代碼代碼如下:

<%@ WebHandler Language="C#" Class="JsonBinderTest" %>

 using System;
 using System.Web;

 using Happy.Web;

 public class JsonBinderTest : IHttpHandler, IWantAutoBindProperty
 {
     [AutoBind]
     public User user { get; set; }

     public void ProcessRequest(HttpContext context)
     {
         context.Response.ContentType = "text/plain";
         context.Response.Write(string.Format("姓名:{0},年齡:{1}", user.Name, user.Age));
     }

     public bool IsReusable
     {
         get
         {
             return false;
         }
     }
 }

 public class User
 {
     public string Name { get; set; }

     public int Age { get; set; }
 }


運行結果

 

基于.NET中:自動將請求參數綁定到ASPX、ASHX和MVC的方法(菜鳥必看)

自動綁定到MVC 
框架支持

復制代碼代碼如下:

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 using System.Web.Mvc;

 using Newtonsoft.Json;

 namespace Tenoner.Web.Mvc
 {
     public class JsonBinder : IModelBinder
     {
         public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
         {
             string json = controllerContext.HttpContext.Request[bindingContext.ModelName];

             return JsonConvert.DeserializeObject(json, bindingContext.ModelType);
         }
     }
 }

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 97国产蝌蚪视频在线观看 | 国产农村一一级特黄毛片 | 国产午夜永久福利视频在线观看 | 欧美一级片在线免费观看 | 久久久无码精品亚洲A片猫咪 | a韩剧| ffee性xxⅹ另类老妇hd | 亚洲码和乱人伦中文一区 | 满城尽带黄金甲大胸片 | 国产欧美日韩精品一区二 | 美女逼逼喷水 | 国产在线98福利播放视频免费 | 亚洲欧美天堂 | 小sao货水好多真紧h的视频 | 国产成人精品免费视频大全五级 | 忘忧草在线社区WWW日本直播 | b片在线观看 | 色99视频 | 久久中文字幕综合不卡一二区 | 精品亚洲视频在线观看 | 国产精品久久久久久久久久久久久久 | 国产日韩欧美综合一区二区三区 | 91国内精品久久久久怡红院 | 精品视频一区在线观看 | 男女刺激高清视频在线观看 | 青青草久 | 倩女还魂在线观看完整版免费 | 日韩欧美亚洲一区二区综合 | 91精品免费国产高清在线 | 日韩视频一区二区 | 国产综合视频在线 | 白丝校花被扒开双腿喷水小说 | 青青青草国产线观 | 国产自在自线午夜精品之la | 日本精工厂网址 | xxxx在线视频| 精品9e精品视频在线观看 | 2022国产在线观看 | 日韩v| 国产精品视频1区 | 免费高清在线视频色yeye |