ASP.NET MVC 5 (六-2) 使用Razor表达式

【MVC架构】Razor语法 =Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 C#)嵌入到网页中。Razor是基于服务器的代码可以在网页传送给浏览器时,创建动态 Web 内容。当一个网页被请求时,服务器在返回页面给浏览器之前先执行页面中的基于服务器的代码。通过服务器的运行,代码能执行复杂的任务,比如进入数据库。叙述==RazorRazor 是基于 ASP.NET 的,是为创建 Web 应用程序而设计的。它具有传统 ASP.NET 的功能,但更容易使用并且更容易学习。 阅读详情

    上一章介绍Razor视图与布局,现在可以在此基础上使用Razor表达式来创建视图内容。

开始使用Razor表达式

    因为MVC是注重并强迫应用程序各部分之间的分离,因此虽然Razor表达式可以使用C#语句,但最好不要使用Razor执行业务逻辑或对域模型进行操作。同样不应该对动作方法传递给视图的数据进行格式化而应该传递一个完整的模型对象。如:

...
 public ActionResult NameAndPrice()
        {
            return View(myproduct);
        }
...

这样在视图中使用Razor表达式可以得到要插入属性的值:

...
The product name is @Model.Name and it costs $@Model.Price 
...

插入数据值

    当希望控制器向视图插入数据时可以采用@ModelRazor表达式,也可以使用@ViewBag表达式以引用试图包特性动态定义的属性。以下的例子则采用这两种方式向视图传递数据。
在HomeConroller.cs文件添加一个DemoExpression动作方法:

using System.Web;
using System.Web.Mvc;
using Razor.Models;

namespace Razor.Controllers
{
    public class HomeController : Controller
    {
        Product myproduct = new Product
        {
            Name = "Kayak",
            Price = 275M,
            IntProductID = 1,
            Category = "Watersports",
            Description = "A boat for one person"
        };
        // GET: Home
        public ActionResult Index()
        {
            return View(myproduct);
        }
        public ActionResult NameAndPrice()
        {
            return View(myproduct);
        }
        public ActionResult DemoExpression()
        {
            ViewBag.ProductCount = 1;
            /*使用ViewBag动态属性传递数据*/
            ViewBag.ExpressShip = true;
            ViewBag.ApplyDiscount = false;
            ViewBag.Supplier = null;
            /*向视图传递Product对象*/
            return View(myproduct);
        }
    }
}

    在Views/Home文件夹中创建一个名称为DemoExpression.cshtml的强类型视图来演示这些基本表达式传递的数据。

@model Razor.Models.Product
@{
    ViewBag.Title = "DemoExpression";
} 
<table>
<thead>
    <tr>
        <th>Property</th><th>Value</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td>Name</td><td>@Model.Name</td>
    </tr>
    <tr>
        <td>Pric</td>
        <td>@Model.Price</td>
    </tr>
    <tr>
        <td>Stock Level</td>
        <td>
           <b>@ViewBag.ProductCount</b>
        </td>
    </tr>
</tbody>
</table>

    这里创建了一个html表格,使用模型对象和视图包的一些属性填充了单元格的值。启动项目并导航到/Home/DemoExpression,可以看到结果如下:
使用viewbag和模型对象传递数据

设置标签属性值

    Razor表达式不仅可以设置元素内容,还可以设置标签属性的值,在DemoExpression.cshtml最后添加一个div和一组checkbox,修改为如下内容:

@model Razor.Models.Product
    @{
        ViewBag.Title = "DemoExpression";
    } 
    <table>
    <thead>
        <tr>
            <th>Property</th><th>Value</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Name</td><td>@Model.Name</td>
        </tr>
        <tr>
            <td>Pric</td>
            <td>@Model.Price</td>
        </tr>
        <tr>
            <td>Stock Level</td>
            <td>
               <b>@ViewBag.ProductCount</b>
            </td>
        </tr>
    </tbody>
    </table>
<div data-discount="@ViewBag.ApplyDiscount" dataexpress="@ViewBag.ExpressShip" data-supplier="@ViewBag.Supplier">
    The containing element has data attributes
</div>

Discount:<input type="checkbox" checked="@ViewBag.ApplyDiscount" />
Express:<input type="checkbox"checked="@ViewBag.ExpressShip" />
Supplier:<input type="checkbox" checked="@ViewBag.Supplier" />

    这里使用Razor表达式在div元素上设置了一些data标签属性的值。
    Razor会将值为null的视图包属性或模型属性渲染成空字符串,并且Razor处理checked这种属性标签时,当值false或null时会完全删除该标签属性。因为当checked属性为false、null或空字符串时,浏览器会显示复选框已勾选,而Razor直接删除该属性则使得复选框处于未选中状态了。
    运行结果如下:
Razor设置标签属性

使用条件语句

    Razor能够处理条件语句,就可以根据视图数据的值,对视图输出进行剪辑而创造复杂而流畅的视图,并使其易于阅读和维护。
如在DemoExpression.cshtml视图中添加了一个条件语句;

@model Razor.Models.Product
    @{
        ViewBag.Title = "DemoExpression";
    } 
    <table>
    <thead>
        <tr>
            <th>Property</th><th>Value</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Name</td><td>@Model.Name</td>
        </tr>
        <tr>
            <td>Pric</td>
            <td>@Model.Price</td>
        </tr>
        <tr>
            <td>Stock Level</td>
            <td>
                 @switch((int)ViewBag.ProductCount)
            {
                case 0:
                    @:Out of stock
                    break;
                case 1:
                    <b>Low Stock (@ViewBag.ProductCount)</b>
                    break;
                default:
                    @ViewBag.ProductCount
                    break;   
            }
            </td>
        </tr>
    </tbody>
    </table>

    要开始一个条件语句,要在C#条件关键字前面放一个@字符,以{结束。需要注意的是在switch中,Razor表达式不能求取动态属性的值,因此必须进行强制类型转换为int类型。
在Razor代码块内部,只要定义html以及Razor表达式就可以将html元素和数据插入到视图输出,如

...
 <b>Low Stock (@ViewBag.ProductCount)</b>
...

或者 像这样:

@ViewBag.ProductCount

不必使用其他任何特殊方式来表示html元素和Razor表达式。还有就是,可以使用如下一个Razor辅助工具直接显示文本文字:

 @:Out of stock

@:字符阻止Razor将此行解释为一条C#语句。
    以下是Razor视图使用if语句:

@model Razor.Models.Product
    @{
        ViewBag.Title = "DemoExpression";
    } 
    <table>
    <thead>
        <tr>
            <th>Property</th><th>Value</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Name</td><td>@Model.Name</td>
        </tr>
        <tr>
            <td>Pric</td>
            <td>@Model.Price</td>
        </tr>
        <tr>
            <td>Stock Level</td>
            <td>
@if (ViewBag.ProductCount == 0) { 
                @:Out of Stock
            }
            else if (ViewBag.ProductCount == 1)
            {
                <b>Low Stock (@ViewBag.ProductCount)</b>
            }
            else
            {
             }
            </td>
        </tr>
    </tbody>
    </table>

枚举数组和集合

    在Home控制器中定义DemoArray动作方法演示如何在MVC中传递和使用枚举和数组集合。

using System.Web;
using System.Web.Mvc;
using Razor.Models;

namespace Razor.Controllers
{
    public class HomeController : Controller
    {
        Product myproduct = new Product
        {
            Name = "Kayak",
            Price = 275M,
            IntProductID = 1,
            Category = "Watersports",
            Description = "A boat for one person"
        };
        ...省略了其他动作方法
        public ActionResult DemoArray()
        {
            Product[] arry ={
                               new Product{Name="Kayak",Price=275M},
                               new Product{Name="LifeTackt",Price=48.95M},
                               new Product{Name="Soccer",Price=19.50M},
                               new Product{Name="Corner flag",Price=34.95M}
                           };
            return View(arry);
        }
      }
}

    该动作方法创建了Product[]对象并传递给View方法,以使用默认视图来渲染这些数据。Visual Studio无法指定一个数组为模型类型,但可以在视图文件中手动修改强制模型视图的模型类型,以下是添加的DemoArray.cshtml视图文件代码:

@using Razor.Models
@model Razor.Models.Product[]
@{
    ViewBag.Title = "DemoArray";
}

@if (Model.Length > 0)
{
    <table>
        <thead>
            <tr>
                <th>Product</th>
                <th>Price</th>
            </tr>
        </thead>
        <tbody>
            @foreach (Product p in Model)
            {
                <tr>
                    <td>@p.Name</td>
                    <td>$@p.Price</td>
                </tr>
            }
        </tbody>
    </table>
}
else
{
    <h2>No product data</h2>
}

    @model Razor.Models.Product[]指定本视图的强制模型类型为Product[],这里使用了一个@if-else语句,以便根据数据内容修改视图。另外,使用一个@foreach表达式来枚举数组的内容,并为每一条数据生成一个html表格行。可以看出来,在foreach循环中创建了一个p局部变量,然后永Razor表达式@p.Name和@p.Prcie引用了它的属性。
导航到/Home/DemoArray,运行结果如下:
Razor使用条件语句

处理命名空间

    上例中

@using Razor.Models

代码像.cs类中一样引用了一个命名空间,只不过需要在using前面加一个@符号而已。

番外篇

    倒霉的是,这两天遇到了一个尴尬的问题:Visual Studio编译运行ASP.NET web应用程序时打开浏览器总是会显示“无法显示此页”,查找了各种处理方法都没法解决,之前重新启动Visual Studio或者重启电脑就可以解决了,但这次这种粗暴的方法好像被免疫了。我之前用的VS2013,就算我再安装了VS2015同样不好用。
    有人说是浏览器的问题,但我电脑上的5个浏览器(Edge、IE、Google Chrome、360安全浏览器、世界之窗浏览器)都不行;有人说防火墙或者安全软件的问题,但我关闭了防火墙和安全软件(没有安装NOD32安全防护,使用的是腾讯电脑管家 )也没有卵用;有人说网卡驱动的问题,我使用驱动精灵更新了所有驱动,可悲是的电脑直接崩溃了,祸不单行啊!
    这下好了,电脑黑屏一下午就是无法开机,用win10自带的修复工具重装了系统才能重新开机,这下终于又能愉快的调试了!!
    不过也因祸得福,电脑磁盘一下干净多了,而且其他盘里的资料都保留下来了,重新装VS和Office和LOL又费了我一整天时间,哈哈哈哈!!!

一口气学会MVC5之Razor语法 概述 我记得在MVC3.0的时候建一个view还可以选择asp.net模板和Razor模板,而今看到mvc5已经推荐使用了Razor作为模板引擎,那我们先来简单看看两者的区别,原始的方式是用<%= %>在HTML代码中去调用C#代码,这种方式是打ASP.NET还在娘胎里就使用的方法,即不灵活,而且又容易和HTML混淆。 Asp.net: <script src="&l... 阅读详情

相关推荐

构建自定义用户登录表单的.NET C# MVC 4 Razor实战指南

创建一个用户友好的登录界面是任何需要用户认证的Web应用程序不可或缺的一步。在.NET C# MVC 4和Razor视图引擎的帮助下,开发者可以创建出既美观又功能强大的登录表单。本章深入探讨了如何设计和实现一个自定义用户登录表单,包括前端的界面设计和后端的逻辑实现。[Required(ErrorMessage = "用户名是必填项")][Display(Name = "用户名")]set;[Required(ErrorMessage = "密码是必填项")]

weixin_42603332的博客 1069

使用Razor表达式 举数组和集合 精通ASP-NET-MVC-5-弗瑞曼

转载于:https://www.cnblogs.com/ganmk--jy/p/5570299.html

weixin_30622181的博客 138

使用 FastAPI 构建高性能异步接口服务(含完整项目示例)

python复制编辑python复制编辑= 1: raise HTTPException(status_code=404, detail="用户不存在")特性FastAPI 支持情况类型注解✅自动文档✅异步支持✅ORM 集成✅(推荐 SQLModel)性能✅ 极高FastAPI 是你构建现代化、高性能 Python Web 应用的首选框架!

2501_92823525的博客 1301

MVC5_Day1(Razor视图引擎)

MVC提供了两种不同的视图引擎:Razor视图引擎、Web Forms视图引擎。1.1 转换字符:核心转换字符@,用作标记<=>代码之间相互转换的字符。不需要采用HTML编码的值,可以使用HTML.Raw方法保证值不被编码。代码表达式被计算,再将值写入响应。隐式代码表达式总是采用HTML编码。1.2 两种基本转换:代码表达式、代码块。视图显示用户的输入等信息,存在XSS(跨站脚本注入攻击)。<text>标签只是把标签内容写入到响应,标签本身不写入。理解HTML和JavaScript编码的安全隐患很重要。

zaichuanguanshui的专栏 226

两张 300I Duo 部署 Qwen3.5‑32B

开发者成功使用两张华为300IDuo(共4颗Ascend310P3芯片)部署Qwen3/Qwen3.5的30B/32B模型,并公开详细步骤。关键点包括:硬件需两张300IDuo(每芯片44GB显存),软件需CANN≥24.1和MindIE2.3.0专用镜像。部署流程涵盖驱动安装、模型下载(需修改为FP16格式)、容器启动、张量并行配置(TP=4)等环节。实测显示每芯片显存占用20-35GB,系统稳定运行。该方案已在知乎等平台验证可行,适用于Qwen3.5-32B等同类模型。

evering的博客 2247

Unity URP半透明物体渲染避坑指南:双面渲染与深度写入的实战技巧

本文深入探讨了Unity URP中半透明物体自交叠渲染问题的核心根源与解决方案。针对模型自身交叠导致的排序错误,文章提供了双面渲染与深度写入两种实战技巧,详细分析了其实现原理、性能开销及适用场景,帮助开发者根据项目需求选择最优方案,有效提升玻璃、水体等材质的视觉表现。

sunny的博客 545

ASP.NET MVC学习---(七)Razor视图引擎语法

之前体验过razor视图引擎@符号的威力了吧~ 连我这个初学者都能感觉到确实省时省力方便快捷 简直就是居家旅行*人*货必备之物啊(这里和谐两个字~) 那么现在就开始对razor的语法进一步介绍~ 1.C#语句块 这个就不用说了吧~ @{代码} 大括号之间写C#代码 关键是还能在C#代码之间直接穿插html标签 这是razor的一大特点 但是它是怎么识别的...

weixin_30478923的博客 385

震坤行:企业 MRO 物料标准化革新之路

那产生这些问题的原因是什么呢?要想解决此问题,企业高层必须下定决心对历史数据进行梳理,并善于利用信息技术,融合企业管理的流程机制,建立起一套适合企业发展的物料标准化管理体系,循序渐进,逐步规避由物料不规范带来的管理问题,最终使得这套标准化体系能够满足企业多元化业务发展需要。国内某电子制造头部企业原先内部物料无对应分类,仅有物料编码,给企业对采购、领料的过程中造成极大的不变,基于震坤行的目录结构,预测物料对应的分类,预测准确率达到80%以上,再辅以人工校正,最终搭建起一套标准的目录体系,如图2.2所示。

carson99的博客 420

Razor语法

Razor 是一种标记语法,用于将基于服务器的代码嵌入网页中。 Razor 语法由 Razor 标记、C# 和 HTML 组成。 包含 Razor 的文件通常具有 .cshtml 文件扩展名。默认 Razor 语言为 HTML, 从 Razor 标记呈现 HTML 与从 HTML 文件呈现 HTML 并没有什么不同, 服务器会按原样呈现 .cshtml Razor 文件中的 HTML 标记。 语...

liwan09的博客 4935

使用菱FX5U系列PLC实现以太网通信的具体方法示例

接下来,我们将创建一个简单的CPU通信功能,以实现与其他设备的以太网通信。在上述代码中,我们首先设置访问号,然后创建一个数据读取命令(M_READ)和一个数据写入命令(M_WRITE)。此外,在实际应用中,您还需要确保PLC和其他设备之间的网络连接正常,并且遵循相应的通信协议。在上述代码中,我们执行了数据读取命令,并将接收到的响应存储在M_RESPONSE变量中。通过简单CPU通信功能,菱FX5U系列PLC可以实现与其他设备的以太网通信。我们将提供相应的源代码和详细的说明,以帮助您轻松实现这一功能。

DevCyberX的博客 1525

Python + Playwright:集成 Applitools 进行视觉回归测试(快速入门)

Applitools是一款基于人工智能的视觉验证测试工具,专门用于自动化和验证应用程序的用户界面(UI);Applitools使用视觉回归测试来检测应用程序界面的变化,确保 UI 在不同版本之间的一致性;Applitools的核心功能是通过视觉比较,检测 UI 元素的差异,而无需手动编写复杂的界面检查代码;通过集成Applitools,测试人员可以轻松捕捉和验证界面中的视觉差异,无论是在Web移动端或桌面应用的测试环境;

blues_C的博客 2918

第二章 基础知识(2) - Razor语法

本文主要讲解Razor的基础语法

SchuylerEX的博客 3342

使用modelscope加载报错:ImportError: cannot import name ‘AutoTokenizer’ from ‘modelscope’...如何解决?| 提供多种解决方案

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1241

【ASP.NET MVC】Razor语法和Razor混编

=@==Html.Partial(“PartialPage”, “这里显示传给PartialPage页面的参数”)它可以用于将一个控制器的Action的结果嵌入到当前视图中,从而实现视图的复用和模块化。2.2.View视图文件的后缀是cshtml,并不是HTML页,而是cs文件。2.1.View视图文件cshtml,在View中可以写入各种HTML标签。// Html.Partial 返回的是字符串,放在这里,行内代码。在页中的指定位置,按一定的参数,嵌入并展示另一个页面的内容。

qq_42222127的博客 1778

小红书直播弹幕采集

本文主要介绍小红书直播间弹幕的采集,便于进行直播数据监控与直播数据进行分析。

tdl320721的博客 2539

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

[Asp.net MVC]Asp.net MVC5系列——Razor语法

目录 概念 Razor语法 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net MVC]Asp.net MVC5系列——添加模型 [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据 [Asp.n

Litt_J的专栏 2597

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ASP.NET MVC中的 Razor语法

ASP.NET Razor语法 ASP.NET MVC中我们经常需要在视图(view)页写一些逻辑处理代码,也就是后端代码,这里就用到了 Razor语法。 首先我们先来了解一下什么是Razor语法。 Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 C#)嵌入到网页中。 基于服务器的代码可以在网页传送给浏览器时,创建动态 Web 内容。当一个网页被请求时,服务器在返回页面给浏览器之前先执行页面中的基于服务器的代码。通过服务器的运行,代码能执行复杂的任务,比如进入数据库。

你是我修复不了的bug,但我会用一生去维护 1167

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ASP.NET MVC Razor 视图引擎

上篇博文介绍了一下Razor的基本语法,那今天看下Razor视图怎么布局吧! Question 网站为啥要布局? 说道布局了那么网站为什么要布局呢?不布局有什么坏处呢?好今天开始咱先说一下为什么要布局? 首先,没有使用布局时,每个页面都存在大量的重复代码比如head top logo menu bottom 等等。 缺点: 1. 代码冗余      ---> 刚才已经提到

冰冻三尺,非一日之寒! 5241

Pro ASP.NET MVC –第五章 使用Razor

Razor是微软在MVC3中引入的视图引擎的名字,在MVC4中对其进行了改进(尽管改动非常小)。视图引擎处理ASP.NET内容、寻找指令,典型地用于插入动态数据并输出到浏览器中。微软维持了两个视图引擎——ASPX视图引擎工作与<%%>标签,ASP.NET已经依赖它多年;RAZOR引擎工作与@字符后的内容块上。 总的来说,如果你熟悉<%%>语法,那么你就不会在使用...

aoding8407的博客 265

ASP.NET + MVC5 入门完整教程六 --- 使用 Razor 表达式

说明:盖茨练习在ASP.NET + MVC5 入门完整教程五的基础上进行,示例创建过程详见点击打开链接 1、Razor表达式在第五部分,已经演示了视图与布局的基础,接下来,我们将熟悉如何使用Razor表达式。在“Controller”中添加 NameAndPrice 的动作方法中: public ActionResult NameAndPrice() { r...

lingshuangcanxue 5498

Asp.net MVC]Asp.net MVC5系列——Razor语法

目录 概念 Razor语法 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net MVC]Asp.net MVC5系列——添加模型 [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据 [Asp.net MV...

anshan9676的博客 175

asp.net mvc Razor 语法

Razor 是一种用于在中创建动态网页的标记语法,它将服务器代码(如 C# 或)与 HTML 融合在一起,让开发者能轻松创建动态内容。

1139

[ASP.NET MVC 小牛之路]03 - Razor语法

本人博客已转移至:http://www.exblr.com/liam Razor是MVC3中才有的新的视图引擎。我们知道,在ASP.NET中,ASPX的视图引擎依靠<%和%>来调用C#指令。而MVC3以后有了一套新的使用@标记的Razor语法,使用起来更灵活更简洁。下面通过一些简单示例让大家快速撑握Razor语法的使用。 准备工作 在演示Razor语法的使用之前,我们需要做一些...

weixin_33802505的博客 1059

Asp.net mvc 5 razor

Asp.net mvc 5 razor 一开始学习dotnet的web项目是Asp.net webform,完全不理解项目为什么要这样设计,就简单的使用ajax调用后台的代码不好吗?为什么还要搞一些什么代码后置的东东。 还有就是有各种加载问题,比如一个页面在后台文件中继承了PageBase,你总得要为这个加载顺序忙上一段时间,好烦。 Asp.net mvc 幸亏在我...

91

ASP.Net-Razor语法

一、什么是Razor 包含Razor语法的文件以.cshtml为文件扩展名,.cs文件熟悉C#的都知道是类文件,可以编译执行。cshtml就可以理解为包含可执行的C#代码的html文件。 为什么可以包含可执行代码呢?就是因为Razor语法。当请求某个页面时,服务器先检测页面是否包含Razor语法的代码,如果有就执行被标记的代码,转换为字符串呈现在html中。最后返回的当然是纯html页面。 ...

GISer修炼空间 1259
上一篇: ASP.NET MVC (六-1) Razor视图引擎
下一篇: ASP.NET MVC 5 (七-1)依赖项注入(DI)容器-Ninject
DoongBo
博客等级 码龄10年 25粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值