gaurav.s23 Ответов: 1

Как сделать datatable полученным из databse в ASP.NET веб-форма доступна для модели angularjs в виде данных json, чтобы я мог изменить таблицу на странице aspx?


У меня очень ограниченные знания о asp.net веб-форма.
на странице code behind, на событии нажатия кнопки, я буду извлекать данные с помощью ado.net адаптер данных и присвоить данные моему объекту (скажем, сотруднику). теперь я должен передать этот список сотрудников с моей страницы aspx.cs в angular js в качестве объекта модели, чтобы я мог визуализировать таблицу с помощью директивы angular и делать фильтры на ней, а что нет.

Но моя проблема заключается в том, как передать эти данные в виде json в angular JS.

Я знаю, что могу достичь этого, создав веб-сервисы или веб-api или даже asp.net mvc, но я ограничен в создании нового проекта на любом из этих архитекторов.

Как мне этого добиться, пожалуйста, помогите мне.

Что я уже пробовал:

namespace WebForm1
{
    public partial class Demo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public string PassJsonData()
        {
            List<Report> reports = new List<Report>();

            using(ReportContext context = new ReportContext())
            {
                reports = context.Reports.ToList();
            }

            string jsonString = string.Empty;

           jsonString = JsonConvert.SerializeObject(reports);

            return jsonString;
        }
    }
}



И в моем файле javascript :


var app = angular.module("myModule", []);

app.controller("ReportController", function ($scope, $http) {

    $scope.GetData = function () {
        
        var url = "/Demo.aspx/PassJsonData"
        $http.Get(url).then(function (response) {

            $scope.report = response.data;
        });
    };

});

1 Ответов

Рейтинг:
8

F-ES Sitecore

Вы не можете вызывать такие методы, вы должны пометить метод как WebMethod

Возвращает данные JSON (объект) из WebMethod (PageMethod) в ASP.Net с использованием C# и VB.Net[^]

Google "asp.net webmethod return json" для других примеров.


[no name]

Не могли бы вы объяснить мне, почему это должен быть статический веб-метод.

F-ES Sitecore

asp.net веб-формы не предоставляют методы класса веб-клиентам, это было бы угрозой безопасности. Если бы у вас был способ перевода денег, который вы используете внутренне, и я узнал, как он называется, я мог бы назвать его сам, передать свои собственные параметры и перевести деньги на свой счет. Поэтому, если вы хотите, чтобы метод был открыт и вызывался через интернет, вам нужно явно сказать об этом с помощью атрибута WebMethod.

[no name]

Я это понимал. Но если я просто создам веб-метод, но не статический
например

[WebMethod]
публичный список<myclass> GetClassDetails(){
// весь код
}

он не работает и работает только в том случае, если метод статичен.

Поэтому я хотел бы знать, почему этот метод должен быть статичным.

F-ES Sitecore

Статические методы можно вызывать без необходимости создания экземпляра объекта, поэтому их проще вызывать с минимальными накладными расходами. Также это побуждает вас помнить, что веб-запросы не имеют состояния, ничего не запоминается и не сохраняется между вызовами, и что функция не работает в обычном жизненном цикле страницы asp.net. Таким образом, даже если метод находится в вашем классе MyPage, вы не можете получить доступ к переменным уровня класса, что означает, что вы также не можете получить доступ к переменным управления страницей. Поскольку вызов происходит за пределами структуры обратной передачи, для вас бессмысленно обращаться к элементам управления asp.net, которые находятся на странице, поскольку они просто не существуют в этот момент. Создание статического метода приводит к этому.

[no name]

Большое спасибо. Теперь я все ясно понял. Я собирался задать еще один вопрос, но думаю, что должен открыть еще одну тему.