MVC 3 и API контактов Google - PullRequest
0 голосов
/ 02 мая 2011

Я пытаюсь раскрыть список людей из контактов Google Mail в MVC 3, используя этот API: http://code.google.com/apis/contacts/ http://code.google.com/apis/contacts/docs/3.0/developers_guide_dotnet.html#Retrieving

Мне нужна помощь, с чего начать при ее реализации. Я прочитал документацию много раз, но для меня это не имеет смысла.

Я хочу снять все контакты и отобразить их в действии «Индекс» моего контроллера контактов.

Любая помощь в этом широком вопросе будет принята с благодарностью.

1 Ответ

3 голосов
/ 02 мая 2011

Сначала получите пример кода, работающего из вышеприведенного (EDIT - см. Ниже, на самом деле) Затем создайте новую ViewModel с любыми полями в ней, которые вы хотите отобразить.Создайте строго типизированное представление для этой ViewModel в виде списка ContactsViewModel (как вы его называете), так что в верхней части вашего представления его: @model IEnumerable<ContactsViewModel>

Создайте маршрут для указания URL на ваш контроллерметод, затем в вашем методе просто запросите от Google, и заполните, используя цикл, LINQ, (или autopper, и т. д.) ваш ContactsViewModel, и верните модель в представление.

Если у вас есть что-то более конкретноевдобавок ко всему, дайте мне знать, и я пойду глубже

По иронии судьбы есть несколько неправильно названных / отформатированных элементов в их одном и том же коде:) Конечно, добавьте ссылки ниже (контакты, клиент, расширения) из C: \ Program Files \ Google \ API данных Google SDK \ Redist папка

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Google.GData.Contacts;
using Google.GData.Client;
using Google.GData.Extensions;
using Google.Contacts;


namespace GoogleTests
{
    class Program
    {
        static void Main(string[] args)
        {

            RequestSettings rs = new RequestSettings("myApplication", "youraccount@gmail.com", "yourpwd");
            // AutoPaging results in automatic paging in order to retrieve all contacts

            rs.AutoPaging = true; 
            ContactsRequest cr = new ContactsRequest(rs);

            Feed<Contact> f = cr.GetContacts();
            foreach (Contact entry in f.Entries)
            {
                if (entry.Name != null)
                {
                    Name name = entry.Name;
                    if (!string.IsNullOrEmpty(name.FullName))
                        Console.WriteLine("\t\t" + name.FullName);
                    else
                        Console.WriteLine("\t\t (no full name found)");
                    if (!string.IsNullOrEmpty(name.NamePrefix))
                        Console.WriteLine("\t\t" + name.NamePrefix);
                    else
                        Console.WriteLine("\t\t (no name prefix found)");
                    if (!string.IsNullOrEmpty(name.GivenName))
                    {
                        string givenNameToDisplay = name.GivenName;
                        if (!string.IsNullOrEmpty(name.GivenNamePhonetics))
                            givenNameToDisplay += " (" + name.GivenNamePhonetics + ")";
                        Console.WriteLine("\t\t" + givenNameToDisplay);
                    }
                    else
                        Console.WriteLine("\t\t (no given name found)");
                    if (!string.IsNullOrEmpty(name.AdditonalName))
                    {
                        string additionalNameToDisplay = name.AdditonalName;
                        if (string.IsNullOrEmpty(name.AdditionalNamePhonetics))
                            additionalNameToDisplay += " (" + name.AdditionalNamePhonetics
                      + ")";
                        Console.WriteLine("\t\t" + additionalNameToDisplay);
                    }
                    else
                        Console.WriteLine("\t\t (no additional name found)");
                    if (!string.IsNullOrEmpty(name.FamilyName))
                    {
                        string familyNameToDisplay = name.FamilyName;
                        if (!string.IsNullOrEmpty(name.FamilyNamePhonetics))
                            familyNameToDisplay += " (" + name.FamilyNamePhonetics + ")";
                        Console.WriteLine("\t\t" + familyNameToDisplay);
                    }
                    else
                        Console.WriteLine("\t\t (no family name found)");
                    if (!string.IsNullOrEmpty(name.NameSuffix))
                        Console.WriteLine("\t\t" + name.NameSuffix);
                    else
                        Console.WriteLine("\t\t (no name suffix found)");
                }
                else
                    Console.WriteLine("\t (no name found)");

                foreach (EMail email in entry.Emails)
                {
                    Console.WriteLine("\t" + email.Address);
                }
            }
        }
    }
}
...