ASP.NET MVCでEasyUIのdatagridがドメインをまたいで呼び出されてコードを実現します.
2363 ワード
最近のプロジェクトではドメインをまたいで他の項目のデータを呼び出す必要があります.他の項目もEasyUIのdatagridコンポーネントを使っています.datagridのurl属性を直接他の項目のurlアドレスと定義すればいいと思い始めましたが、テストでjsonデータを返しました.しかし、json数は「invalid label」エラーを示しました.JavaScriptはJsonのinvalid labelエラー解決方法を処理します.「datagridのloadData方法を利用して、jsonをロードして変換しました.
JavaScriptがドメインをまたいで呼び出された記事を検索しました.「JavaScriptクロスドメインアクセス問題解決方法」ヒントを得たのは、easyUIはJQueryの非同期的な方法でデータをロードするためであり、JQueryのクロスドメインアクセス規則に従うべきであった.つまり、上記の記事で述べたurlにはjsol calback=?コールバック関数パラメータが必要であり、戻ってきたjsonのフォーマットは、コールバック関数名(jsonデータ)に修正しなければならないことがわかった.現在戻ってきたデータはJson形式のデータだけです.コールバック関数名がなく、自然にエラーが発生しました.ASP.NET MVCカスタムJsorsult類を修正しました.具体的にはどのようにカスタムJsoult類を作成しますか?ASP.NET MVC Jsorsultプログレッシブ結果をカスタマイズします.
コードは以下の通りです
出典:http://www.cnblogs.com/mikel/
JavaScriptがドメインをまたいで呼び出された記事を検索しました.「JavaScriptクロスドメインアクセス問題解決方法」ヒントを得たのは、easyUIはJQueryの非同期的な方法でデータをロードするためであり、JQueryのクロスドメインアクセス規則に従うべきであった.つまり、上記の記事で述べたurlにはjsol calback=?コールバック関数パラメータが必要であり、戻ってきたjsonのフォーマットは、コールバック関数名(jsonデータ)に修正しなければならないことがわかった.現在戻ってきたデータはJson形式のデータだけです.コールバック関数名がなく、自然にエラーが発生しました.ASP.NET MVCカスタムJsorsult類を修正しました.具体的にはどのようにカスタムJsoult類を作成しますか?ASP.NET MVC Jsorsultプログレッシブ結果をカスタマイズします.
コードは以下の通りです
public class CustomJsonResult:JsonResult
{
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
HttpResponseBase response = context.HttpContext.Response;
if (!String.IsNullOrEmpty(ContentType))
{
response.ContentType = ContentType;
}
else
{
response.ContentType = "application/json";
}
if (ContentEncoding != null)
{
response.ContentEncoding = ContentEncoding;
}
if (Data != null)
{
#pragma warning disable 0618
// json jsoncallback
if (context.HttpContext.Request.Params.AllKeys.Contains("jsoncallback"))
{
String callback = context.HttpContext.Request.Params["jsoncallback"];
response.Write(callback+"("+JsonConvert.SerializeObject(Data)+")");
}
else
{
response.Write(JsonConvert.SerializeObject(Data));
}
#pragma warning restore 0618
}
}
}
EasyUIのdatagridのコードは以下の通りです.
//datagrid
$('#dg').datagrid({
url:'http://localhost:9000/ManagementSystem/ListCurrent?department=sss&jsoncallback=?',
pageNumber: 1,
pageSize: 20,
pageList: [20, 40, 60, 80, 100],
onDblClickRow: function(rowIndex) {
edit();
}
});
作者:mikel出典:http://www.cnblogs.com/mikel/