2012-11-08 70 views
0

試圖從JSON調用C#類。JSON調用C#類方法

的JSON代碼是在我的master.cshtml文件,如下所示:

var tips = $(".validateTips"); 

function updateTips(t) { 
    tips 
    .text(t) 
    setTimeout(function() { 
     tips.removeClass("ui-state-highlight", 1500); 
    }, 500); 
} 

$.ajax({ 
    type: "POST", 
    url: "/App_Code/LoginClass.cs/test", 
    data: {}, 
    contentType: "application/json; charset=utf-8", 
    datatype: "JSON", 
    success: function (msg) { 
     updateTips(msg.d); 
    } 
}); 

的C#代碼是在文件LoginClass.cs,看起來像這樣:

public class LoginClass 
{ 
    public static string test() 
    { 
     return "hello"; 
    } 
} 

my solution folders looks like this: 
+----App_Code 
| | 
| +---LoginClass.cs 
| 
+----Views 
| | 
| +---Shared 
|  | 
|  +---Master.cshtml 
| 
+----default.cshtml (Where the master layout page is connected to) 

的updateTips不會

回答

5

當您對MVC應用程序進行AJAX調用時,仍然需要通過控制器。

控制器文件夾來創建一個控制器類(Ctrl + M鍵,CTRL + C)稱爲的AccountController並添加以下方法:

public class AccountController : Controller 
{ 
    [HttpPost] 
    public ActionResult Test() 
    { 
    return Json("hello"); 
    } 
} 

JavaScript調用:

$.ajax({ 
    type: "POST", 
    url: "/Login/test", 
    data: {}, 
    contentType: "application/json; charset=utf-8", 
    datatype: "JSON", 
    success: function (msg) { 
     updateTips(msg.d); 
    } 
}); 
3

I」恐怕你不能在ASP.NET MVC中調用這樣的代碼。你首先需要通過Controller

通過創建一個控制器開始,通常在項目根控制器文件夾:

public class LoginController : Controller // Inherit from Controller base class. 
{ 
    // An action on the controller that you can call. 
    [HttpPost] // Use HttpPost to limit only to POST requests. 
    public ActionResult Test() 
    { 
     // Use your class here to get values. 
     string value = LoginClass.test(); 

     // Return a JSON result that converts your object to JSON for you. 
     return Json(value); 
    } 
} 

,然後調用動作像這樣(根據全球的默認路由模式{Controller}/{Action}的一部分。 ASAX):

$.ajax({ 
    type: "POST", 
    url: "/Login/Test", // Notice the new path. ("Controller" is always subtracted from a controller name: "LoginController" > "Login".) 
    data: {}, 
    contentType: "application/json; charset=utf-8", 
    datatype: "JSON", 
    success: function (msg) { 
     updateTips(msg.d); 
    } 
}); 

如果你想使用JSON沒有POST:

public ActionResult Test() 
{ 
    string value = LoginClass.test(); 
    return Json(value, JsonRequestBehavior.AllowGet); 
}