2012-11-08 2 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 호출을 만들 때 여전히 컨트롤러를 통과해야합니다.

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

자바 스크립트 전화 :

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

I '는 컨트롤러 폴더 AccountController라는 컨트롤러 클래스 (Ctrl 키 + M, Ctrl + C)를 만들고 다음과 같은 방법을 추가에서

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) :

public ActionResult Test() 
{ 
    string value = LoginClass.test(); 
    return Json(value, JsonRequestBehavior.AllowGet); 
} 
: 당신이 POST없이 JSON을 사용하려면

$.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); 
    } 
}); 

관련 문제