由於與Sharepoint不兼容,我一直被委託將單頁ASP.NET MVC 3 Web應用程序轉換爲ASP.NET 3.5 Web Forms應用程序。我無法訪問Web窗體應用程序的json結果中的對象的屬性。誰能告訴我我做錯了什麼?另外,當使用Web表單來返回JSON數據時,使用WCF服務還是常規Web服務更好?任何人都可以給我一些例子嗎?使用內置的JavaScript序列化程序或JSON.net庫會更好嗎?這裏是我的代碼 -直接在客戶端訪問JSON對象的屬性
MVC方法 -
public ActionResult LoadPerson()
{
var p = new Person;
p.Name = "Bob";
return Json(new { value = p}, JsonRequestBehavior.AllowGet); //what is the equivalent of this in webforms so I can access the properties directly?
}
MVC JavaScript文件 -
var person;
$.ajax({
url: 'Home/LoadPerson',
type: 'GET',
async: false,
contentType: 'application/json;',
dataType: 'json',
success: function (result) {
person = result.value;
}
});
alert(person.Name); //works fine.
Web窗體代碼隱藏 -
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string LoadPerson()
{
var p = new Person();
p.Name = "Bob";
var serializer = new JavaScriptSerializer();
return serializer.Serialize(p);
}
Web窗體的JavaScript -
var person;
$.ajax({
url: 'Default.aspx/LoadPerson',
type: 'POST',
async: false,
contentType: 'application/json;',
dataType: 'json',
success: function (result) {
person = result.d;
}
});
alert(person.Name); //undefined. Why?
就是這樣!非常感謝。如果我刪除'asynx:false',那麼Person對象可能就是null。順便說一下,我是你網站的忠實粉絲:) – tempid 2012-02-04 03:52:31
我也在你的帖子的某個地方讀過你的帖子,建議你去WCF路線而不是Web服務。我該如何解決這個問題?謝謝! – tempid 2012-02-04 03:53:32
@ user349308:如果您只需要一個用於AJAX調用的JSON端點,那麼您現在正在做的是一個好方法。當您不需要任何高級功能或靈活性時,很難證明WCF的複雜性。 – 2012-02-04 05:29:19