如何解决如何在 Blazor Web 程序集中客户端部分的 Program.cs 文件中注册控制器存在于服务器部分
我有一个控制器,它存在于 Blazor Web 程序集的服务器项目中,它是预渲染的。为了从这个控制器访问服务,它必须在应用程序的客户端项目的 Program.cs 文件中注册。请告诉我是否可以将此控制器调用到客户端项目中的 razor 文件中。
这是 Server/Controllers 文件夹中的 CultureContoller.cs 代码:
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Mvc;
namespace CookieLocalization.Server.Controllers
{
[Route("[controller]/[action]")]
public class CultureController : Controller
{
public IActionResult SetCulture(string culture,string redirectUri)
{
if (culture != null)
{
HttpContext.Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,CookieRequestCultureProvider.MakeCookieValue(
new RequestCulture(culture)));
}
return LocalRedirect(redirectUri);
}
public IActionResult ResetCulture(string redirectUri)
{
HttpContext.Response.Cookies.Delete(CookieRequestCultureProvider.DefaultCookieName);
return LocalRedirect(redirectUri);
}
}
}
这是位于 Client/Pages 文件夹中的 CultureSelector.razor:
@using System.Globalization
@inject NavigationManager NavigationManager
@using System.Threading
<div style="margin-left:20px">@SelectedCulture</div>
<select value="@SelectedCulture" @onchange="OnSelected">
@foreach (var culture in Cultures)
{
<option value="@culture.Value">@culture.Caption</option>
}
</select>
@code {
private void OnSelected(ChangeEventArgs e)
{
var culture = (string)e.Value;
var uri = new Uri(NavigationManager.Uri)
.GetComponents(UriComponents.PathAndQuery,UriFormat.Unescaped);
var query = $"?culture={Uri.EscapeDataString(culture)}&" +
$"redirectUri={Uri.EscapeDataString(uri)}";
NavigationManager.NavigateTo("/Culture/SetCulture" + query,forceLoad: true);
}
public string SelectedCulture { get; set; } = Thread.CurrentThread.CurrentUICulture.Name;
public class CultureData
{
public string Caption { get; set; }
public string Value { get; set; }
}
public List<CultureData> Cultures { get; set; } = new List<CultureData>()
{
new CultureData() { Caption = "English",Value = "en-US" },new CultureData() { Caption = "French",Value = "fr-FR" },new CultureData() { Caption = "German",Value = "de-DE" },};
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。