【问题标题】:Call a class in javascript in visual studio在 Visual Studio 中调用 javascript 中的类
【发布时间】:2013-06-26 07:12:33
【问题描述】:

我有一个控制器类,我从数据库中获取数据并在函数中返回,现在我想在 js 中调用此函数并将数据设置为变量以显示在页面中:

我的代码如下:exampleController.cs

namespace iSee.WebApiHse.Controllers
{
    public class expController : StandardController
    {

        public expController(
            first myService,
            ISystemSettings systemSettings,
            IService myExpService)
        {
            _myService = MyService;
            _systemSettings = systemSettings;
            _myExpService = myExpService;
        }

        // GET data
        public ActionResult Myexample(int id)
        {
            var elementIds = _systemSettings.ExpIds; 

            var myElements = CacheService.AllVisibleElements
                                  .Where(x => elementIds.Contains(x.Id)).ToList();

            var container = _kpiContainerService.Find(id);

            var result = _myService.MonthByContainer(myElements, container);
            return AsJson(result);
        }
    }
}

这行得通,我得到了数据。现在我有myExp.js 我需要在其中使用这些数据。我该怎么做?

谢谢

【问题讨论】:

    标签: c# javascript .net ajax asp.net-mvc


    【解决方案1】:

    您需要向控制器执行$ajax(..)(jquery 语法)请求,以从服务器传递和获取计算信息。

    为此,您将要调用的控制器方法必须公开以供 HTTP 访问。

    更多详情:

    How to call controller method from javascript

    【讨论】:

      【解决方案2】:

      您想在 View by JavaScript 中使用您的控制器吗?这不是个好主意。您应该将 Model 传递给 View 并使用它或 ajax 并接收 json-data

      【讨论】:

        【解决方案3】:

        使用jQuery-ajax 调用您的C# 方法的示例:

        // javascript
        
        var id = 987;
        
        $.ajax({
            url : '/expController/Myexample/',
            type : 'GET',
            data { id : id },
            dataType : 'json', // <-- tell jQuery to decode the JSON automatically
            success : function(response){
                console.log(response);
            }
        });
        

        这将调用您的方法,传入id 的值,然后它将JSON 解码为response 对象。

        对于纯 Javascript ajax(无 jQuery),请参阅 MDN Ajax

        【讨论】:

          【解决方案4】:

          您需要向 Action Myexample 发出请求。通常这是通过AJAX

          在您看来,您可以:

          function makeAJaxCall(idToSend) {
              $.ajax({
                  url: '@Url.Action("exp", "Myexample")',
                  data: { id : idToSend },
                  type: "POST",
                  success: function(data) {
                     $("#HTMLElement").val(data.YourData);
                  }
              });
          }
          

          如果AJAX 调用成功,您的响应将返回到data 变量中。我提供了一个示例,向您展示如何使用 ID HTMLElement 更改 HTML 元素的值。

          要调用你可以做的函数:

           makeAjaxCall(100);
          

          【讨论】:

            【解决方案5】:

            您可以在var 中加载JSON 数据并将其传递给expjs.js 中的函数,如下所示:

            var data = data_from_ajax();
            exp_js_function(data);
            

            data_from_ajax() 将从您的控制器和操作方法接收 JSON 数据。

            请将此视为起点,而不是复制粘贴解决方案

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-06-30
              • 1970-01-01
              • 2010-09-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多