2017-03-14 2 views
0

ID를 사용하는 기본 템플릿 ASP.NET MVC 5 프로젝트를 사용하고 있습니다. Google Oauth을 내 애플리케이션에 성공적으로 연결했지만 로그인 할 수 있지만 navbar의 로그인 링크를 /Account/Login에서 첫 번째 홈 페이지의 navbar에서 직접 Google에 로그인하도록 수정하려고합니다.navbar에서 Google 계정으로 로그인

내 현재 _LoginPartial.cshtml 나는이 작업을 수행 할 수있는 방법

ul class="nav navbar-nav navbar-right"> 
    @* <li>@Html.ActionLink("Register", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li>*@ 
    <li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li> 
</ul> 

?

미리 감사드립니다.

답변

0

_ExternalLogIn.cshtml이라는 새 부분 뷰를 만듭니다. _LogInPartial.cshtml에서 단지

<ul class="nav navbar-nav navbar-right"> 
    @Html.Partial("_ExternalLogIn",new ExternalLoginListViewModel()) 
</ul> 

가) (당신이 ExternalLoginListViewModel 여기 오류를 얻을 수 있습니다 참조하십시오, 당신은이 질문에 위에서 작성한 코드를 언급하고이 같은 부분 뷰를 호출합니다. 그래서 당신은이 같은 페이지의 상단에 참조를 추가해야
@using MyProject.Web.Models 

다음과 같이 당신의 _ExternalLogIn 부분보기 쓰기,

@model MyProject.Web.Models.ExternalLoginListViewModel 
@using Microsoft.Owin.Security 
@{ 
var loginProviders = 
Context.GetOwinContext().Authentication.GetExternalAuthenticationTypes(); 
if (loginProviders.Count() != 0) 
{ 
    using (Html.BeginForm("ExternalLogin", "Account", new { ReturnUrl = 
    Model.ReturnUrl })) 
    { 
     @Html.AntiForgeryToken() 
     foreach (AuthenticationDescription provider in loginProviders) 
     { 
      if (provider.AuthenticationType == "Facebook") 
      { 
      <li> 
       <div class="form-group"> 
       <button type="submit" class="btn btn-block btn-social 
       btn-gplus" name="provider" 
        id="@provider.AuthenticationType" 
        value="@provider.AuthenticationType" 
        style="width:100%;text-align:left;border- 
         radius:0px;color:white">        
       </button> 
       </div> 
       </li> 
      } 
     } 

변경 귀하의 요구 사항에 따라 CSS를한다. 건배.

+0

_LoginPartial.cshtml VS 웹 위쪽에 @using MyProject.Web.Models 삽입 할 때 귀하의 단계를 수행하고 새 부분보기를 생성하고 오류가 발생하여 "지시문 사용 불필요" –

+0

프로젝트 웹 모델을 포함해야합니다. MyProject를 프로젝트 이름으로 변경하면됩니다. 그게 전부 야. –

+0

나는 이미 그렇게했다. –

관련 문제