您的当前位置:首页 > 国际 > 正文

动态:Blazor 使用代码直接在新窗口打开链接, 获取窗口宽度, 使用cookie

  • 2023-06-05 08:33:43 来源:博客园


(相关资料图)

1. 在新窗口打开链接

[Inject, NotNull] IJSRuntime? JS { get; set; }

await JS.InvokeVoidAsync("eval", @"let discard= open(https://www.blazor.zone/tables/edit, _blank)");

await JS.InvokeVoidAsync("eval", $"let discard= open({url}, _blank)");

2. 直接获取窗口宽度,不用写js脚本了吧?

var innerWidth = await JS.InvokeAsync("eval", "window.innerWidth");

3. 使用cookie

原文链接: https://www.frankslowcodeblog.com/post/2023/03/23/session-variable-as-cookie-in-radzen-blazor

定义一个服务类:

using Microsoft.JSInterop;namespace MyProject.Utils{    public interface ICookie    {        public Task SetValue(string key, string value, int? days = null);        public Task GetValue(string key, string def = "");    }    public class CookieService: ICookie    {        readonly IJSRuntime JSRuntime;        string expires = "";        public Cookie(IJSRuntime jsRuntime)        {            JSRuntime = jsRuntime;            ExpireDays = 300;        }        public async Task SetValue(string key, string value, int? days = null)        {            var curExp = (days != null) ? (days > 0 ? DateToUTC(days.Value) : "") : expires;            await SetCookie($"{key}={value}; expires={curExp}; path=/");        }        public async Task GetValue(string key, string def = "")        {            var cValue = await GetCookie();            if (string.IsNullOrEmpty(cValue)) return def;                            var vals = cValue.Split(";");            foreach (var val in vals)                if(!string.IsNullOrEmpty(val) && val.IndexOf("=") > 0)                    if(val.Substring(0, val.IndexOf("=")).Trim().Equals(key, StringComparison.OrdinalIgnoreCase))                        return val.Substring(val.IndexOf("=") + 1);            return def;        }        private async Task SetCookie(string value)        {            await JSRuntime.InvokeVoidAsync("eval", $"document.cookie = \"{value}\"");        }        private async Task GetCookie()        {            return await JSRuntime.InvokeAsync("eval", $"document.cookie");        }        public int ExpireDays        {            set => expires = DateToUTC(value);        }        private static string DateToUTC(int days) => DateTime.Now.AddDays(days).ToUniversalTime().ToString("R");    }}

然后在 startup.cs 中添加此服务

services.AddScoped(); 

在页面上使用

[Inject, NotNull] protected ICookie? Cookie { get; set; }await Cookie.SetValue("mytest20", "Hello Blazor!");_message = await Cookie.GetValue("mytest20");

标签:

推荐阅读

动态:Blazor 使用代码直接在新窗口打开链接, 获取窗口宽度, 使用cookie

1 在新窗口打开链接[Inject,NotNull]IJSRuntime?JS{get;set;}awaitJ

霸王花茶树菇猪肺汤做法? 环球微资讯

食材:猪肺500g,霸王花干20g,茶树菇30g,无花果干3颗,大枣2颗,生姜

生殖道病毒感染_关于生殖道病毒感染介绍

生殖道病毒感染,关于生殖道病毒感染介绍这个很多人还不知道,我们一起

如何消除额头皱纹小妙招_如何消除额头皱纹_全球信息

1、注意休息,避免疲劳,保证充足的睡眠,保持愉快的心情,避免面部表

环球微资讯!2021感动中国人物颁奖词 2021感动中国人物

今天来聊聊021感动中国人物颁奖词,2021感动中国人物的文章,现在就为

猜您喜欢

【版权及免责声明】凡注明"转载来源"的作品,均转载自其它媒体,转载目的在于传递更多的信息,并不代表本网赞同其观点和对其真实性负责。亚洲房产网倡导尊重与保护知识产权,如发现本站文章存在内容、版权或其它问题,烦请联系。 联系方式:8 86 239 5@qq.com,我们将及时沟通与处理。

商业