Как получить доступ к методу в контроллере с общей страницы _Layout.cs html? - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу поместить определенный селектор в заголовок каждой страницы, поэтому мне нужно поставить html в макете.

Получил этот код в моем _Layout.cs html для доступа к частичному виду.

@{ Html.Partial("~/Views/Culture/Index.cshtml"); }

Это мой частичный html код. Но модель здесь всегда нулевая, когда я запускаю код. Он не может получить доступ к моему методу контроллера.

@model CultureModel

<div>
    <form id="culture-switcher" class="culture-form">
        <select name="culture" asp-action="Index" asp-controller="Culture" id="culture-options">
            @foreach (var culture in Model.SupportedCultures)
            {
                <option value="@culture.Name" selected="@(Model.CurrentUICulture.Name == culture.Name)">@culture.DisplayName</option>
            }
        </select>
    </form>
</div>

Тогда это мой контроллер.

public class CultureController : Controller
{
    private readonly IOptions<RequestLocalizationOptions> localizationOptions;

    public CultureController(IOptions<RequestLocalizationOptions> localizationOptions)
    {
        this.localizationOptions = localizationOptions;
    }

    [HttpGet]
    public async Task<IActionResult> Index()
    {
        var cultureFeature = HttpContext.Features.Get<IRequestCultureFeature>();

        var model = new CultureModel
        {
            SupportedCultures = localizationOptions.Value.SupportedUICultures.ToList(),
            CurrentUICulture = cultureFeature.RequestCulture.UICulture
        };

        return View(model);
    }
}
...