2016-09-29 6 views
0

은 내가 ASP.NET core samples에서 언어 선택을 복사에 SetLanguage 방법을 추가 한 내 컨트롤러를 호출하지 않으며 더 네트워크 요청 또는 내가 변경 자바 스크립트 오류가 발생되지 않습니다 그러나ASP 액션 호출하지 컨트롤러

[HttpPost] 
    public IActionResult SetLanguage(string culture, string returnUrl) 
    { 
     Response.Cookies.Append(
      CookieRequestCultureProvider.DefaultCookieName, 
      CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)), 
      new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) } 
     ); 

     return LocalRedirect(returnUrl); 
    } 

언어 선택 누락 된 부분에 대한 제안.

<div title="Request culture provider: AcceptLanguageHeaderRequestCultureProvider"> 
<form id="selectLanguage" method="post" class="form-horizontal" role="form" action="/Home/SetLanguage?returnUrl=%2F"> 
    Language: <select name="culture" id="requestCulture_RequestCulture_UICulture_Name"><option selected="selected" value="en-GB">English (United Kingdom)</option> 
<option value="en-US">English (United States)</option> 
<option value="en">English</option> 
<option value="de">Deutsch</option> 
<option value="fr">français</option> 
</select> 
    <input name="__RequestVerificationToken" type="hidden" value="CfDJ8GV_4Y4TrKRMt52xrAg49HFabVGQ6RTHVo2cPjiA2tk3yAtt7EFi-dr3P6wRdR6vj0FqDcXgKwvYef8HrVWa9tFupW9eTJMOBQ848jT_zG2t2-0_XNuAFmnOYfAu3DNBuS6DpF8RF8TfmRdTktOQYzk"></form> 
</div> 
+0

우편 배달부 또는 다른 REST API 테스트 도구를 사용하여'SetLanguage' 메소드를 호출 한 경우 작동합니까? – Ignas

답변

0

당신이 선택 자동 게시물을 할 수있는 자바 스크립트를 추가 않았다 다음과 같이

@using Microsoft.AspNetCore.Builder 
@using Microsoft.AspNetCore.Http.Features 
@using Microsoft.AspNetCore.Localization 
@using Microsoft.AspNetCore.Mvc.Localization 
@using Microsoft.Extensions.Options 

@inject IViewLocalizer Localizer 
@inject IOptions<RequestLocalizationOptions> LocOptions 

@{ 
    var requestCulture = Context.Features.Get<IRequestCultureFeature>(); 
    var cultureItems = LocOptions.Value.SupportedUICultures 
     .Select(c => new SelectListItem { Value = c.Name, Text = c.DisplayName }) 
     .ToList(); 
} 

<div title="@Localizer["Request culture provider:"] @requestCulture?.Provider?.GetType().Name"> 
    <form id="selectLanguage" asp-controller="Home" asp-action="SetLanguage" asp-route-returnUrl="@Context.Request.Path" method="post" class="form-horizontal" role="form"> 
    @Localizer["Language:"] <select name="culture" asp-for="@requestCulture.RequestCulture.UICulture.Name" asp-items="cultureItems">  </select> 
    </form> 
</div> 

렌더링 된 HTML은?

(function() { 
$("#selectLanguage select").change(function() { 
    $(this).parent().submit(); 
    }); 
}()); 
+0

ASP.NET이 자동으로 이와 같은 코드를 생성 할 것으로 예상하여 추가하지 않았습니다. 추가가 도움이되지 않았습니다 – Mark

+0

이 코드를 추가하여'select'를 변경하면 어떻게 될까요? 제출 버튼을 추가하면 작동합니까? 아니요, 귀하가 선택하지 않으면 자동으로 선택을 제출하지 않습니다. –

+0

페이지에서 jquery를 사용합니까?이 코드는 jquery에 따라 다릅니다. 이 코드는 https://github.com/aspnet/Entropy/blob/dev/samples/Localization.StarterWeb/wwwroot/js/site.js를 모방하려는 샘플 코드에서 가져온 것입니다. –