0

他のユーザーからの質問1 、質問2のとおりですが、適切な回答が得られなかったので、ここで質問しました。

ASP.NET MVC を使用しており、ソーシャル ログイン プロバイダーを部分ビューで読み込もうとしています。

しかし、私はそれが私にエラーを与えることはできません。

ここに画像の説明を入力

これは、部分ビューを返すコードです。

 public async Task<PartialViewResult> GetProviders()
        {
            string apiUrl = "mywebsite";

            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri(apiUrl);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage response = await client.GetAsync("Account/externalloginpathhere");
                //var result = Task.Run(async () => { await client.GetAsync("Account/externalloginpathhere"); }).Result;
                if (response.IsSuccessStatusCode)
                {
                    var data = await response.Content.ReadAsStringAsync();
                    var providers = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ViewModel>>(data);

                    foreach(var provider in providers)
                    {
                        if (provider.Name == "Google")
                        {
                            //code come here
                        }
                        else if (provider.Name == "Facebook")
                        {
                            //code come here
                        }
                        else if (provider.Name == "Microsoft")
                        {
                            //code come here
                        }
                    }
                    return PartialView("~/Views/Account/_ExternalLoginsListPartial.cshtml", providers);
                }
                return null;
            }
        }

ホーム コントローラー ビューからの呼び出しを表示します。

@{Html.RenderAction("GetProviders", "Account");}

これは私がやったことです。私が間違っているところはどこでも修正してください!

4

1 に答える 1

1

正しいかどうかわからないことがわかりましたが、誰かに役立つことを願って解決策を得ました。

1 つの部分ビューを作成し、ログインまたはサインアップ プロセスが必要なページ内にその部分ビューをバインドしました。

部分ビューをバインドします

@Html.Partial("~/Views/Account/_ExternalLoginsListPartial.cshtml")

外部プロバイダーの部分ビュー:

 @{
    var loginProviders = Context.GetOwinContext().Authentication.GetExternalAuthenticationTypes();
    if (loginProviders.Count() >= 0)
            {
             using (Html.BeginForm("ExternalLogin", "Account", FormMethod.Post, new { id = "externalLogin" }))
             {
     @Html.AntiForgeryToken()
                 <ul>
                   @foreach (var p in loginProviders)
                   {
                      <li>
                         <button value="@p.Caption" title="Login using @p.Caption account" name="provider" id="@p.Caption.ToLower()" type="submit" class="social-button">
                             <i class="fa fa-@p.Caption.ToLower()" id="@p.Caption"></i> 
                         </button>
                     </li>
                   }
                 </ul>
                }
             }
}
于 2017-01-12T06:52:42.723 に答える