ホームページ ウェブフロントエンド jsチュートリアル jQuery を使用して複雑な json データを asp.net Mvc に渡す - ModelBinder_jquery

jQuery を使用して複雑な json データを asp.net Mvc に渡す - ModelBinder_jquery

May 16, 2016 pm 06:27 PM
asp.net jquery jsonデータ mvc

jQuery の ajax メソッドを呼び出すと、jQuery は post または get プロトコルに従ってパラメータ データをシリアル化します。

送信されたデータが複雑な json データを使用する場合、たとえば、

{userId:32323, userName :{firstName:"李",lastName:"李大口"}}

jQuery はキーと値のペアのアセンブリを使用してデータをシリアル化するため、
メソッドを使用して完全なパラメーターを受け取ることができません。
パラメータは userId=32323&userName=object に組み立てられ、userName が指すオブジェクトは文字列 "object" にシリアル化されます。


複雑なオブジェクトを送信する方法 アクション パラメータについてはどうすればよいですか

まず、パラメーターのシリアル化に関する jQuery の問題を解決します。

コードをコピーします コードは次のとおりです。 :

/*文字列にシリアル化されたオブジェクト*/
String.toSerialize = function(obj) {
var ransferCharForJavascript = function(s) {
var newStr = s.replace (
/[x26x27x3Cx3Ex0Dx0Ax22x2Cx5Cx00]/g,
function(c) {
ascii = c.charCodeAt(0)
return '\u00' (ascii < 16 ? '0 ' ascii.toString (16) : ascii.toString(16))
}
);
return newStr;
}
if (obj == null) {
return null
}
else if (obj.constructor == Array) {
var builder = [];
builder.push("[");
for (obj の var インデックス) {
if (typeof obj[index] == "関数") 続行;
if (index > 0) builder.push(",");
builder.push(String.toSerialize(obj[index])) ;
}
builder.push("]");
return builder.join("");
else if (obj.constructor == Object) {
var builder = [];
builder.push("{");
for (obj の var key) {
if (typeof obj[key] == " function") continue;
if (index > 0) builder.push(",");
builder.push(String.format(""{0}":{1}" , key, String .toSerialize(obj[key])));
インデックス ;
builder.push("}");
return builder.join(""); >else if (obj.constructor == Boolean) {
return obj.toString();
}
else if (obj.constructor == Number) {
return obj.toString();
}
else if (obj.constructor == String) {
return String.format('"{0}"', ransferCharForJavascript(obj));
}
else if ( obj.constructor == Date) {
return String.format('{"__DataType":"Date","__thisue":{0}}', obj.getTime() - (new Date( 1970, 0, 1, 0, 0, 0)).getTime());
}
else if (this.toString != unknown) {
return String.toSerialize(obj); >}



jQuery 非同期リクエスト:



コードをコピー


コードは次のとおりです。
$(function() { /*ボタンクリックイベント*/ $("#btn_post_test").click(function() { var data = [ { ユーザー ID: "11"、ユーザー名: { 名: "323"、姓: "2323" }、キー: ["xiaoming"、"xiaohong"] }、
{ ユーザー ID: "22"、ユーザー名: { FirstName: "323", LastName: "2323" }, Keys: ["xiaoming", "xiaohong"] },
{ UserId: "33", UserName: { FirstName: "323", LastName: " 2323 " }, キー: ["xiaoming", "xiaohong"] }
];
$.post("Home/Test", { users: String.toSerialize(data) }, function(text) {
alert(String.toSerialize(text));
}, "json"))
});


ボタンをクリックしてデータを送信しますモニター ブラウザーで、送信されたデータが json オブジェクトのシリアル化されたコンテンツであることがわかります。




コードをコピー

コード
POST /Home/Test HTTP/1.1 x-requested-with: XMLHttpRequest Accept-Language: zh-cn Referer: http:// localhost:3149/test.html Accept: application/json, text/javascript, */* Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
ユーザー エージェント: Mozilla /4.0 (互換性; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0 ; InfoPath.2; .NET4 .0C; .NET4.0E)
ホスト: localhost:3149
接続: キープアライブ
キャッシュ制御: キャッシュなし
Cookie: CookieGlobalLoginUserID=16063
users=[{"UserId":"11","Name":{"FirstName":"323","LastName":"2323"},"Keys":["シャオミン","シャオホン"] },{"ユーザーID":"22","名前":{"名":"323","姓":"2323"},"キー":["シャオミン","シャオホン"]},{"ユーザーID":"33","名前":{"名":"323","姓":"2323"},"キー":["シャオミン","シャオホン"]} ]


次に、バックグラウンド サーバーがパラメータ バインディングを処理します:
コードをコピー コードは次のとおりです:

System.Collections.Generic を使用;
System.Web.Mvc を使用;
Newtonsoft.Json.Linq を使用
名前空間
🎜>[HandleError]
public class HomeController : Controller
{
///
/// テストメソッド
/// // ユーザー データ
/// 送信されたユーザー配列
public ActionResult Test([ModelBinder(typeof(JsonBinder ユーザー)
{
return Json(users, JsonRequestBehavior.AllowGet)
}
}
///
// / オブジェクト エンティティ
///
[JsonObject]
public class User
{
[JsonProperty("UserName")]
public UserName Name { get;セット; }
[JsonProperty("UserId")]
public string UserId { set; }
[JsonProperty("Keys")]
public List ; }
}
///
/// オブジェクト エンティティ
///
パブリック クラス UserName
{
[JsonProperty("FirstName")]
パブリック文字列 FirstName { セット; }
[JsonProperty("LastName")]
パブリック文字列 LastName { セット; }
///
/// Json データ バインディング クラス
///

/// /typeparam>
public class JsonBinder : IModelBinder
{
public object BindModel(ControllerContextcontrollerContext, ModelBindingContext bindingContext)
{
// リクエストから送信されたパラメーター データを取得します
var json =controllerContext.HttpContext.Request.Form[bindingContext.ModelName] as string;
//送信パラメータはオブジェクトです
if (json.StartsWith("{") && json.EndsWith("} " ))
{
JObject jsonBody = JObject.Parse(json);
JsonSerializer js = new JsonSerializer();
object obj = js.Deserialize(jsonBody.CreateReader(), typeof(T) ) );
return obj;
}
//送信パラメータは配列です
if (json.StartsWith("[") && json.EndsWith("]"))
{
IList list = new List();
JArray jsonRsp = JArray.Parse(json);
if (jsonRsp != null)
{
for ( int i = 0; jsonRsp.Count; i )
{
JsonSerializer();
obj = js.Deserialize(jsonRsp[i].CreateReader() T)) ;
list.Add((T)obj);
}
}
return
}
}
}


フロントエンドはバックグラウンドから返されたデータを取得し、その結果がユーザーによって送信されたデータになります。


バックグラウンドの JSON デシリアライズでは Newtonsoft が使用されます。 .Json コンポーネント 関連情報については、
http://james.newtonking.com/
を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

jQueryのリファレンスメソッドを詳しく解説:クイックスタートガイド jQueryのリファレンスメソッドを詳しく解説:クイックスタートガイド Feb 27, 2024 pm 06:45 PM

jQuery 参照方法の詳細説明: クイック スタート ガイド jQuery は、Web サイト開発で広く使用されている人気のある JavaScript ライブラリであり、JavaScript プログラミングを簡素化し、開発者に豊富な機能を提供します。この記事では、jQuery の参照方法を詳しく紹介し、読者がすぐに使い始めるのに役立つ具体的なコード例を示します。 jQuery の導入 まず、HTML ファイルに jQuery ライブラリを導入する必要があります。 CDN リンクを通じて導入することも、ダウンロードすることもできます

PHP MVC アーキテクチャ: 将来に向けた Web アプリケーションの構築 PHP MVC アーキテクチャ: 将来に向けた Web アプリケーションの構築 Mar 03, 2024 am 09:01 AM

はじめに 今日の急速に進化するデジタル世界では、堅牢かつ柔軟で保守可能な WEB アプリケーションを構築することが重要です。 PHPmvc アーキテクチャは、この目標を達成するための理想的なソリューションを提供します。 MVC (Model-View-Controller) は、アプリケーションのさまざまな側面を独立したコンポーネントに分離する、広く使用されている設計パターンです。 MVC アーキテクチャの基礎 MVC アーキテクチャの核となる原則は、関心事の分離です。 モデル: アプリケーションのデータとビジネス ロジックをカプセル化します。ビュー: データの表示とユーザー インタラクションの処理を担当します。コントローラー: モデルとビュー間の対話を調整し、ユーザーのリクエストとビジネス ロジックを管理します。 PHPMVC アーキテクチャ phpMVC アーキテクチャは従来の MVC パターンに従いますが、言語固有の機能も導入しています。以下はPHPMVCです

jQueryでPUTリクエストメソッドを使用するにはどうすればよいですか? jQueryでPUTリクエストメソッドを使用するにはどうすればよいですか? Feb 28, 2024 pm 03:12 PM

jQueryでPUTリクエストメソッドを使用するにはどうすればよいですか? jQuery で PUT リクエストを送信する方法は、他のタイプのリクエストを送信する方法と似ていますが、いくつかの詳細とパラメータ設定に注意する必要があります。 PUT リクエストは通常​​、データベース内のデータの更新やサーバー上のファイルの更新など、リソースを更新するために使用されます。以下は、jQuery の PUT リクエスト メソッドを使用した具体的なコード例です。まず、jQuery ライブラリ ファイルが含まれていることを確認してから、$.ajax({u

jQueryで要素の高さ属性を削除するにはどうすればよいですか? jQueryで要素の高さ属性を削除するにはどうすればよいですか? Feb 28, 2024 am 08:39 AM

jQueryで要素の高さ属性を削除するにはどうすればよいですか?フロントエンド開発では、要素の高さ属性を操作する必要が生じることがよくあります。要素の高さを動的に変更する必要がある場合や、要素の高さ属性を削除する必要がある場合があります。この記事では、jQuery を使用して要素の高さ属性を削除する方法と、具体的なコード例を紹介します。 jQuery を使用して高さ属性を操作する前に、まず CSS の高さ属性を理解する必要があります。 height 属性は要素の高さを設定するために使用されます

jQuery のヒント: ページ上のすべての a タグのテキストをすばやく変更する jQuery のヒント: ページ上のすべての a タグのテキストをすばやく変更する Feb 28, 2024 pm 09:06 PM

タイトル: jQuery ヒント: ページ上のすべての a タグのテキストをすばやく変更する Web 開発では、ページ上の要素を変更したり操作したりする必要がよくあります。 jQuery を使用する場合、ページ内のすべての a タグのテキスト コンテンツを一度に変更する必要がある場合があります。これにより、時間と労力を節約できます。以下では、jQuery を使用してページ上のすべての a タグのテキストをすばやく変更する方法と、具体的なコード例を紹介します。まず、jQuery ライブラリ ファイルを導入し、次のコードがページに導入されていることを確認する必要があります: &lt

jQuery を使用してすべての a タグのテキスト コンテンツを変更する jQuery を使用してすべての a タグのテキスト コンテンツを変更する Feb 28, 2024 pm 05:42 PM

タイトル: jQuery を使用して、すべての a タグのテキスト コンテンツを変更します。 jQuery は、DOM 操作を処理するために広く使用されている人気のある JavaScript ライブラリです。 Web 開発では、ページ上のリンク タグ (タグ) のテキスト コンテンツを変更する必要が生じることがよくあります。この記事では、この目標を達成するために jQuery を使用する方法を説明し、具体的なコード例を示します。まず、jQuery ライブラリをページに導入する必要があります。 HTML ファイルに次のコードを追加します。

PHP MVC アーキテクチャの上級ガイド: 高度な機能のロックを解除する PHP MVC アーキテクチャの上級ガイド: 高度な機能のロックを解除する Mar 03, 2024 am 09:23 AM

MVC アーキテクチャ (モデル-ビュー-コントローラー) は、コードを編成し、WEB アプリケーションの開発を簡素化するための明確な構造を提供するため、PHP 開発で最も一般的なパターンの 1 つです。基本的な MVC 原則はほとんどの Web アプリケーションには十分ですが、複雑なデータを処理したり高度な機能を実装する必要があるアプリケーションにはいくつかの制限があります。モデル層の分離 モデル層の分離は、高度な MVC アーキテクチャでは一般的な手法です。これには、モデル クラスを小さなサブクラスに分割し、それぞれが特定の機能に焦点を当てることが含まれます。たとえば、電子商取引アプリケーションの場合、メイン モデル クラスを注文モデル、製品モデル、顧客モデルに分割できます。この分離により、コードの保守性と再利用性が向上します。依存関係注入を使用する

jQuery 要素に特定の属性があるかどうかを確認するにはどうすればよいですか? jQuery 要素に特定の属性があるかどうかを確認するにはどうすればよいですか? Feb 29, 2024 am 09:03 AM

jQuery 要素に特定の属性があるかどうかを確認するにはどうすればよいですか? jQuery を使用して DOM 要素を操作する場合、要素に特定の属性があるかどうかを判断する必要がある状況がよく発生します。この場合、jQuery が提供するメソッドを使用してこの関数を簡単に実装できます。以下では、jQuery 要素が特定の属性を持つかどうかを判断するために一般的に使用される 2 つの方法を紹介し、具体的なコード例を添付します。方法 1: attr() メソッドと typeof 演算子 // を使用して、要素に特定の属性があるかどうかを判断します

See all articles