страна-потребитель.asmx

#c# #asp.net #xml #web-services

#c# #asp.net #xml #веб-сервисы

Вопрос:

Я пытаюсь добавить веб-службу страны в выпадающий список. Я добавил веб-ссылку и у меня есть файлы discomap и wsdl.

Вот мой код, лежащий в основе:

 net.webservicex.www.country ws = new net.webservicex.www.country();
ddlCountry.DataSource = ws.GetCountries();
ddlCountry.DataBind();
  

Я попробовал приведенный выше код, но он отображает только один символ в строке в выпадающем списке. Я не совсем уверен, как это сделать, я впервые использую веб-сервисы. Я ценю любую помощь. Спасибо!

Комментарии:

1. какой объект возвращает ws.GetCountries()?

2. я думаю, что это строка. как мне проверить?

3. проверьте подпись на GetCountries();

4. наведение курсора мыши на строку показывает страну. GetCountries()

5. Я бы подумал, что он должен возвращать какую-то коллекцию строк, например List<sting> или IEnumerable<string> .

Ответ №1:

GetCountries() возвращает XML. Вам нужно проанализировать XML, чтобы получить список стран в виде списка строк.

Если у вас .NET 3.5 или выше, вы можете легко это сделать с помощью LINQ to XML.

 using System;
using System.Linq;
using System.Xml.Linq;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var service = new net.webservicex.www.country();
            var xml = service.GetCountries();
            var countries = XDocument.Parse(xml).Descendants("Name").Select(arg => arg.Value).ToList();
            countriesDropDownList.DataSource = countries;
            countriesDropDownList.DataBind();
        }
    }
}
  

Комментарии:

1. Я пытаюсь добавить выпадающий список в базу данных sql, но когда я делаю это с помощью ddlCountry. Выбранное значение в моей инструкции insert, в таблице отображается только первое значение из выпадающего списка. Должен ли я использовать onselectedindexchanged, чтобы каким-то образом сохранить значение? Какой код я должен использовать? TIA.