0

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 はそうではありません

4

2 に答える 2

5

MVC アプリケーションに対して AJAX 呼び出しを行う場合でも、コントローラーを経由する必要があります。

コントローラーフォルダーで、AccountController というコントローラー クラス (Ctrl+M、Ctrl+C) を作成し、次のメソッドを追加します。

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);
   }
});
于 2012-11-08T13:13:22.923 に答える
3

残念ながら、ASP.NET MVC でそのようなコードを呼び出すことはできません。Controller最初に通過する必要があります。

通常はプロジェクト ルートのControllersフォルダーにコントローラーを作成することから始めます。

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

POST なしで JSON を使用する場合:

public ActionResult Test()
{
    string value = LoginClass.test();
    return Json(value, JsonRequestBehavior.AllowGet);
}
于 2012-11-08T13:26:28.190 に答える