Jquery + AJAX + ASP.Net + WebForms - PullRequest
       7

Jquery + AJAX + ASP.Net + WebForms

3 голосов
/ 25 мая 2010

У меня есть некоторые данные JQuery AJAX POST для моего бэкэнда C # WebForm. Он передает метод статической строки WebForm, который возвращает значение, JQuery использует это значение для изменения URL-адреса изображения в html. Все хорошо и модно.

Тем не менее, я хотел бы расширить функциональность существующего кода (хотя я не могу полностью переписать его), чтобы позволить мне манипулировать элементами управления ASP внешнего интерфейса из бэкенда C #, что я не могу сделать из-за к указанному методу статической строки, действующей как моя WebForm.

У кого-нибудь есть идеи, чтобы помочь моему затруднительному положению?

Backend

    [System.Web.Services.WebMethod]
    public static string ImageLoad(string address)
    {
        //if fail
        return "/Unavailable.bmp";

        //if succeed
        return "myimage.jpg";
        //third option
        else
        return "myotherimage.jpg";
    }

JQuery / AJAX

function scriptImageLoad() {
   var address = $("#txtAddress").val();
       $.ajax({
           type: "POST",
           url: "myPage.aspx/ImageLoad",
           data: "{'address':'" + address.toString() + "'}",
           contentType: "application/json; charset=utf-8",
           dataType: "text",
           success: function (output) {
                $('#imgImage').attr('src', output);
           }
       });
   }
});

Ответы [ 3 ]

4 голосов
/ 25 мая 2010

Используйте WebService . Это позволит вам позвонить в службу jQuery в любое место на вашем веб-сайте.

function scriptImageLoad() {
   var address = $("#txtAddress").val();
       $.ajax({
           type: "POST",
           url: "MyService.asmx/ImageLoad",
           data: "{'address':'" + address.toString() + "'}",
           contentType: "application/json; charset=utf-8",
           dataType: "text",
           success: function (output) {
                $('#imgImage').attr('src', output);
           }
       });
   }
});

[WebService, ScriptService]
public class MyService : WebService
{
    [ScriptMethod]
    public static string ImageLoad(string address)
    {
        //if fail
        return "/Unavailable.bmp";

        //if succeed
        return "myimage.jpg";
        //third option
        else
        return "myotherimage.jpg";
    }
}
2 голосов
/ 25 мая 2010

Для обработки серверных элементов управления требуется некоторая обратная передача.

Панели обновления - ваш единственный реальный выбор для работы с элементами управления asp.net в этом сценарии.

Но я бы посоветовал найти другой подход - панели обновления являются злом и дадут вам бородавки. плохой вид.

0 голосов
/ 26 мая 2010

С помощью коллеги я разработал другое решение. Структура содержит выходные данные, которые я желаю, затем она передается в строковый массив, а затем возвращается через веб-метод статической строки. После возвращения в Jquery данные помещаются туда, куда они должны идти, по различным индексам массива.

Передняя часть

function scriptImageLoad() {
   var address = $("#txtAddress").val();
      $.ajax({
         type: "POST",
         url: "MyForm.aspx/MyMethod",
         data: "{'address':'" + address.toString() + "'}",
         contentType: "application/json; charset=utf-8",
         dataType: "JSON",

         success: function (output) {
            $.each(output, function (index, value) {
               place value in form
               return (index != 0);
            })
            $.each(output, function (index, value) {
               place value in form
               return (index != 1);
            })
            $.each(output, function (index, value) {
               place value in form
               return (index != 2);
            })
            $.each(output, function (index, value) {
               $('#imgImage').attr('src', this);
               return (index != 3);
            })
         }

Задняя часть

    public struct TestStruct
    {
        public string value1;
        public string value2;
        public string value3;
        public string value4;

        public TestStruct(string value1, string value2, string value3, string value4)
        {
            this.value1 = value1;
            this.value2 = value2;
            this.value3 = value3;
            this.value4 = value4;
        }
    }

    [System.Web.Services.WebMethod]
    public static string[] MyMethod(string address)
    {
        string[] returnarray = new string[4];
        TestStruct struct;
        struct.value1 = "";
        struct.value2 = address;
        struct.value3 = "";
        struct.value4 = "/Unavailable.bmp";

        //if fail, return default values
                returnstring.SetValue(struct.value1, 0);
                returnstring.SetValue(struct.value2, 1);
                returnstring.SetValue(struct.value3, 2);
                returnstring.SetValue(struct.value4, 3);
                return returnstring;

        //if succeed
                struct.values = processed values;
                set the values on returnstring
                return returnstring;
        //else
                struct.values = other processed values;
                set the values on returnstring
                return returnstring;
    }

Теперь единственные проблемы, которые у меня возникают, - это заставить Jquery правильно отображать данные для клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...