Я хочу поместить определенный селектор в заголовок каждой страницы, поэтому мне нужно поставить 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);
}
}