【问题标题】:JSON calling C# class methodJSON调用C#类方法
【发布时间】:2012-11-08 13:02:27
【问题描述】:

尝试从 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)

更新提示没有

【问题讨论】:

    标签: c# javascript asp.net-mvc json razor


    【解决方案1】:

    当您对 MVC 应用程序进行 AJAX 调用时,您仍然需要通过控制器。

    Controller 文件夹中创建一个名为 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);
       }
    });
    

    【讨论】:

      【解决方案2】:

      恐怕你不能在 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);
          }
      }
      

      然后像这样调用动作(根据global.asax中默认路由模式{Controller}/{Action}的一部分):

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

      【讨论】:

        猜你喜欢
        • 2016-12-17
        • 2016-02-14
        • 1970-01-01
        • 1970-01-01
        • 2015-06-29
        • 2012-02-09
        • 1970-01-01
        • 2012-12-12
        • 1970-01-01
        相关资源
        最近更新 更多