组件解决的问题

由于Blazor在与服务器连接时使用了Websocket,仅在第一次连接时会走原MVC的连接逻辑。所以,我们无法在这个过程中完成例如身份认证、cookie处理等操作。

此组件即为解决此类问题准备的。

组件用法

官网文档可以直接查阅

这里给出一部分代码:

  • 在页面上添加<Ajax></Ajax>的组件引用

  • @inject AjaxService AjaxService注入AjaxService

var option = new AjaxOption
{
Url = "/api/Login",
Data = new User() { UserName = "admin", Password = "123456" }
};

定义一个AjaxOption,其中Url即为要访问的WebApi地址,Data为RequestData。默认method为POST,也可以自己定义。

  • var result = await AjaxService.GetMessage(ajaxOption);使用AjaxService.GetMessage来调用Ajax方法访问指定Url并获取返回。

在官网例子中,WebApi的定义如下:

[Route("api/[controller]")]
[AllowAnonymous]
[ApiController]
public class LoginController : ControllerBase
{
/// <summary>
///
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
[HttpPost]
public IActionResult Post(User user)
{
IActionResult? response;
if (user.UserName == "admin" && user.Password == "123456")
{
response = new JsonResult(new { Code = 200, Message = "登录成功" });
}
else
{
response = new JsonResult(new { Code = 500, Message = "用户名或密码错误" });
}
return response;
}
}

这里校验如果用户名为admin并且密码为123456时返回登录成功,否则返回用户名或密码错误。

然后我们就可以判断返回的result来判断是否登录成功。

if (result == null)
{
ResultMessage = "响应失败";
}
else
{
ResultMessage = result;
var doc = JsonDocument.Parse(result);
if (200 == doc.RootElement.GetProperty("code").GetInt32())
{
await SwalService.Show(new SwalOption() { Content = "登录成功!", Category = SwalCategory.Success });
}
else
{
await SwalService.Show(new SwalOption() { Content = $"登录失败:{doc.RootElement.GetProperty("message").GetString()}", Category = SwalCategory.Error });
}
}

建议使用位置

Ajax组件是比较简单的jqueryAjax方法的封装,封装的内容比较少,只支持Json作为参数,返回值也会转换成Json,所以仅建议用于登录等内部前后端交流,并且需要带cookie或者必须由浏览器发起的特殊逻辑中。

复杂的访问,建议使用c#的HttpClient类,不建议使用此组件进行处理。

Blazor 组件库 BootstrapBlazor中 Ajax 组件的使用的更多相关文章

  1. Blazor 组件库 BootstrapBlazor 中Editor组件介绍

    组件介绍 Editor组件是对Summernote 组件的二次封装. 组件分为div模式和editor模式. 默认状态下editor模式的组件样子如下: 其代码如下: <Editor @bind ...

  2. Antd组件库,利用Menu组件模拟一个简单Tree组件

    当前工作中,前端的主要技术栈用是vue. 那React怎么办呢?总不至于把他扔在墙角吧! 只能在一些很小的项目上,也只有自己一个前端的时候,悄悄的上React. 当然,React项目UI组件还是最喜欢 ...

  3. Vue3 企业级优雅实战 - 组件库框架 - 3 搭建组件库开发环境

    前文已经初始化了 workspace-root,从本文开始就需要依次搭建组件库.example.文档.cli.本文内容是搭建 组件库的开发环境. 1 packages 目录 前面在项目根目录下创建了 ...

  4. 【Angular】关于angular引用第三方组件库无法改变其组件样式 :host ::ng-deep

    [Angular]关于angular引用第三方组件库无法改变其组件样式 :host ::ng-deep css修改:无效 .ant-input-affix-wrapper .ant-input:not ...

  5. 基于vue2.0前端组件库element中 el-form表单 自定义验证填坑

    eleme写的基于vue2.0的前端组件库: http://element.eleme.io 我在平时使用过程中,遇到的问题. 自定义表单验证出坑: 1: validate/resetFields 未 ...

  6. BootstrapBlazor 组件库使用体验---Table篇

    原文地址:https://www.cnblogs.com/ysmc/p/13323242.html Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 Ja ...

  7. Blazor组件提交全记录: FullScreen 全屏按钮/全屏服务 (BootstrapBlazor - Bootstrap 风格的 Blazor UI 组件库)

    Blazor 简介 Blazor 是一个使用 .NET 生成的交互式客户端 Web UI 的框架.和前端同学所熟知的 Vue.React.Angular 有巨大差异. 其最大的特色是使用 C# 代码( ...

  8. BootstrapBlazor 组件库介绍

    项目介绍 演示系统地址:https://www.blazor.zone Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建丰富 ...

  9. Ant Design Blazor 组件库的路由复用多标签页介绍

    最近,在 Ant Design Blazor 组件库中实现多标签页组件的呼声日益高涨.于是,我利用周末时间,结合 Blazor 内置路由组件实现了基于 Tabs 组件的 ReuseTabs 组件. 前 ...

随机推荐

  1. 实践:Linux下安装mysql8.0

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.下载mysql8.0安装包 1.在local创建mysql文件夹 cd /usr/local mkdir mysql cd mysql 2.使 ...

  2. 搭建Loki、Promtail、Grafana轻量级日志系统(centos7)

    搭建Loki.Promtail.Grafana轻量级日志系统(centos7)--简称PLG 需求 公司项目采用微服务的架构,服务很多,每个服务都有自己的日志,分别存放在不同的服务器上.当查找日志时需 ...

  3. Ubuntu下使用C语言连接Mysql 8.0客户端教程

    Ubuntu下如何C语言程序连接MYSQL 8.0(全教程) 1. 安装GCC(略) 2. 安装mysql(本人使用的是最新MySQL 8.0版本) sudo apt install mysql-cl ...

  4. python练习册 每天一个小程序 第0013题

    # -*-coding:utf-8-*- ''' 题目描述: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-) 地址: http://tieba.baidu.com/p/21 ...

  5. [FromBody]List<string> 用PostMan如何请求

    在MVC项目,写了一个API方法,如下: /// <summary>/// 测试/// </summary>/// <param name="idList&qu ...

  6. Android BLE 蓝牙开发——扫码枪基于BLESSED

    一.蓝牙模式HID与BLE 当扫码枪与手机连接时,通常采用的是蓝牙HID(Human Interface Device)模式.本质上是一个把扫码枪作为一个硬件键盘,按照键盘协议把扫码后的结果逐个输入到 ...

  7. 为什么Java中 wait 方法需要在 synchronized 的方法中调用?

    另一个棘手的核心 Java 问题,wait 和 notify.它们是在有 synchronized 标记的方法或 synchronized 块中调用的,因为 wait 和 modify 需要监视对其上 ...

  8. 『忘了再学』Shell基础 — 6、Bash基本功能(输入输出重定向)

    目录 1.Bash的标准输入输出 2.输出重定向 (1)标准输出重定向 (2)标准错误输出重定向 (3)正确输出和错误输出同时保存 3.输入重定向 1.Bash的标准输入输出 我们前边一直在说,在Li ...

  9. 攻防世界php_rce

    php_rce 进入题目提示为ThinkPHP V5 遇到这种题我们一般去找一下框架的rce漏洞即可,搜索到这样一篇文章 https://www.freebuf.com/articles/web/28 ...

  10. ROS终端中创建功能包的常用命令