Asmx получает значения (параметры) POST от Extjs? - PullRequest
2 голосов
/ 23 октября 2011

Как получить отправленные значения в переменную .asmx, которая была отправлена ​​из extjs, чтобы ее можно было сохранить с помощью ado.net в базе данных?

ОТПРАВКА ДАННЫХ С EXT.AJAX

{
    text: 'Add',
    formBind: true,
    disabled: true,
    handler: function () {

        var form = this.up('form').getForm();
        var formValues = form.getValues();

        var firstName = formValues.firstName;
        var lastName = formValues.lastName;

        if (form.isValid()) {

            Ext.Ajax.request({

                url: 'WebServices/WebService.asmx/AddAgent',
                headers: { 'Content-Type': 'application/json' },
                method: 'POST',
                jsonData: { FirstName: firstName, LastName: lastName }


            });
        }
    }
}

При отправке firebug сообщает об ошибке:enter image description hereКак правильно получить эти значения в .asmx, чтобы их можно было использовать в [WebMethod] и сохранить в Ado.Net?

    [Serializable]
    public class Agents
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }


    //CREATE
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]

    public string AddAgent()
    {
        string connStr = ConfigurationManager.ConnectionStrings["AgentsServices"].ConnectionString; 

        using (SqlConnection connection = new SqlConnection(connStr))
        {
            connection.Open();

            using (SqlCommand command = new SqlCommand("insert into Agent(id, firstName, lastName) values(@id, @firstName, @lastName)", connection))
            {
                command.Parameters.AddWithValue("@firstName", FirstName); //here i get message( The name "FirstNAme does not exist in current context")
                command.Parameters.AddWithValue("@lastName", LastName); // -||-

                command.ExecuteNonQuery();

            }
        }       
    } 

РЕДАКТИРОВАТЬ:

Нет.Внутренняя ошибка сервера stil 500:

enter image description here

1 Ответ

3 голосов
/ 23 октября 2011

Ваш веб-метод, похоже, не принимает никаких аргументов. Также ваш метод ожидает возврата строки, но вы ничего не возвращаете. Так что либо верните что-нибудь, либо измените сигнатуру вашего метода на void. Также вы установили UseHttpGet = true и все же отправляете запрос POST. Попробуйте вот так:

[WebMethod]
[ScriptMethod]
public void AddAgent(Agents agents)
{
    string connStr = ConfigurationManager.ConnectionStrings["AgentsServices"].ConnectionString; 
    using (SqlConnection connection = new SqlConnection(connStr))
    {
        connection.Open();
        using (SqlCommand command = new SqlCommand("insert into Agent(id, firstName, lastName) values(@id, @firstName, @lastName)", connection))
        {
            command.Parameters.AddWithValue("@firstName", agents.FirstName);
            command.Parameters.AddWithValue("@lastName", agents.LastName);
            command.ExecuteNonQuery();
        }
    }       
}

Кроме того, поскольку вы определили свойство Id своей модели Агентов как целое число, которое не может иметь значение NULL, я бы порекомендовал вам отправить для него значение:

jsonData: { agents: { Id: 0, FirstName: firstName, LastName: lastName } }
...