2017-11-13 3 views
1

私はMicrosoft Graph APIを試していて、Microsoft開発者サイトのクイックスタートでプロジェクトをセットアップしました。Microsoft Graphですべての連絡先を一覧表示するには?

ログされたアカウントに関連付けられているすべての電子メールの連絡先を一覧表示しようとすると、現在問題が発生しています。

私の問題は、適切なフロントエンドのリストであっても、NullReferenceの例外をスローするため、どのように情報を要求して、それをViewBagに渡しているかのようです。ここで

は、関連するコードされています。私はここで何を

HomeController.cs

public async Task<ActionResult> GetMyContacts() 
{ 
    try 
    { 
     // Init GraphServiceClient 
     GraphServiceClient graphClient = SDKHelper.GetAuthenticatedClient(); 
     var contacts = await graphService.GetMyEmailContacts(graphClient); 
     ViewBag.Contacts = contacts; 

     return View("Graph"); 
    } 
    catch (ServiceException se) 
    { 
     if (se.Error.Message == Resource.Error_AuthChallengeNeeded) return new EmptyResult(); 
     return RedirectToAction("Index", "Error", new { message = Resource.Error_Message + Request.RawUrl + ": " + se.Error.Message }); 
    } 
} 

GraphService.cs

public async Task<IList<Contact>> GetMyEmailContacts(GraphServiceClient graphClient) 
{ 
    User me = await graphClient.Me.Request().Select("mail,userPrincipalName").GetAsync(); 
    var contacts = me.Contacts; 
    return contacts; 
} 

Graph.cshtml

<div class="col-sm-12"> 
<pre name="user-contacts">@ViewBag.Contacts</pre> 
</div> 
<h2>TEST GET CONTACTS</h2> 
<div class="col-sm-12"> 
<p>@Html.Raw(ViewBag.Contacts)</p> 
</div> 

行方不明ですか?

+1

あなたはグラフビューのためのあなたのforontendコードを表示していただけますか? – krzysztofla

+0

@KrzysztofLa Done –

答えて

2

ビューで元のタイプに戻す必要があります。 ViewBagはC#4の動的型です。返されたエンティティは、キャストされない限り動的です。

var contactList = ViewBag.Contacts as IEnumerable<Contact>; 

あなたは全体のリストを表示したい場合は、それはこのような単純なのです:

@foreach (var contact in contactList) 
{ 
    <li>@contact</li> 
} 
+0

私はそれを得るが、私の問題は、適切なフロントエンドのリスト@CrzysztofLaであってもNullReference例外をスローするので、どのように情報を要求してViewBagに渡すかにあるようだ。 –

+2

あなたの質問... Btw。モデルをビューに渡さず、ビューがモデルにバインドされている場合は、null例外が発生します。コントローラからビューにこのモデルを渡していることを確認してください。 '@model YourModel' – krzysztofla

関連する問題