razor

MVC Razor, add if statement to foreach loop

99封情书 提交于 2020-05-07 18:25:04
问题 I'm trying to add data from my model to a table with razor. My problem is that i want an if statement to decide what class the tagg should be and i can't get this to work. When i add the if i get the following error when i run the code The foreach block is missing a closing "}" character How should i add the if statement? This is my current code @{ var counter = 0; } @foreach (var item in Model) { if(item.status == "Active") { <tr> } else { <tr class="danger"> } <td>@counter</td> <td>@item

ASP.NET MVC 企业级实战

会有一股神秘感。 提交于 2020-05-06 01:46:29
1、泛型 public class List<T>{ } 当定义泛型类的实例时,必须指定这个实例所存储的实际类型,泛型允许程序员将一个实际的数据类型规约延迟至泛型的实例被创建时才确定,泛型主要有两个有点: 1)编译时可以保证类型安全 2)不用做类型装换,获得一定的性能提升。 2、泛型方法、泛型委托、泛型接口 //泛型委托 public delegate void Del<T>(T item); public static void Notify(int i){} //泛型接口 public class myClass<T1,T2,T3>:MyInteface<T1,T2,T3>{ public T1 Method1(T2 param1,T3 param2){ throw new NotImplementedException();}} interface MyInteface<T1,T2,T3>{ T1 Method1(T2 param1,T3 param2); } //泛型方法 static void Swap<T>(ref T t1,ref T t2){ T temp=t1; t1=t2; t2=temp; } public void Interactive(){ string str1="a"; string str2="b"; Swap<string> (ref str1

【译】.NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容

回眸只為那壹抹淺笑 提交于 2020-05-05 16:37:28
.NET Core 3.0 Preview 3已经推出 ,它包含了一系列关于ASP.NET Core的新的更新。 下面是该预览版的更新列表: Razor组件改进: 单项目模板 新的Razer扩展 Endpoint路由集成 预呈现 Razor类库中的Razor组件 改进事件处理 Forms & validation 运行时编译 Worker服务模板 gRPC模板 Angular模板已更新为Angular 7 SPA认证 SignalR与Endpoint路由集成 SignalR Java客户端支持长轮询 其他详细信息和已知问题,请参阅 发行说明 。 开始 要在.NET Core 3.0 Preview 3中开始使用ASP.NET Core, 请安装.NET Core 3.0 Preview 3 SDK 如果您使用的是Visual Studio,则还需要 安装Visual Studio 2019的最新预览版 【译者注:目前VS2019正式版已经发布,直接安装正式版即可】。 注意:要在Visual Studio 2019中使用.NET Core 3.0预览版,需要启用选项以使用.NET Core SDK预览版,方法是通过【 工具>选项>项目和解决方案> .NET Core>使用.NET Core SDK预览版 】 升级现有项目 将现有的ASP.NET Core应用程序升级到.NET

ASP.NET Core3.0 中的运行时编译

假装没事ソ 提交于 2020-05-05 16:32:47
运行时编译 通过 Razor 文件的运行时编译补充生成时编译。 当 .cshtml 文件的内容发生更改时,ASP.NET Core MVC 将重新编译 Razor 文件 。 通过 Razor 文件的运行时编译补充生成时编译。 RazorViewEngineOptions AllowRecompilingViewsOnFileChange 获取或设置一个值,该值确定当磁盘上的文件发生更改时是否重新编译和更新 Razor 文件(Razor 视图和 Razor Pages)。 对于以下项,默认值为 true : 将应用的兼容性版本设置为 Version_2_1 或更早版本 如果应用的兼容性版本设置为 Version_2_2 或更高版本,并且应用位于开发环境 IsDevelopment 中。 换句话说,除非明确设置 AllowRecompilingViewsOnFileChange ,否则 Razor 文件不会在非开发环境中重新编译。 有关设置应用的兼容性版本的指导和示例,请参阅 ASP.NET Core MVC 的兼容性版本 。 使用 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 包启用运行时编译。 要启用运行时编译,应用必须: 安装 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

在Asp.Net Core MVC 3.0 视图运行时编译

一个人想着一个人 提交于 2020-05-05 15:47:21
在正常情况下,视图在生成的时候就会变为 xxx.Views.dll,在开发的时候,这样很不方便,因为很多的时候,我们只是修改一个样式,调整一些JavaScript代码,这个时候要把项目调试暂停下来,生成之后在看页面效果。 先通过nuget 包控制台安装: Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation -Version 3.0.0 然后在Startup.cs文件,在ConfigureServices函数中加入: .AddRazorRuntimeCompilation() // 如下 services.AddMvc() .AddRazorRuntimeCompilation() .AddNewtonsoftJson() .SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_3_0); 最后在项目文件中添加(VS2019双击项目): 注:不进行如下操作也可运行时编译,只是发布时 Views 目录会被编译为 ***.Views.dll 文件 < RazorCompileOnBuild > false </ RazorCompileOnBuild > < RazorCompileOnPublish >

ASP.NET Core 中的 Razor 文件编译

人走茶凉 提交于 2020-05-05 15:33:17
asp .net core mvc 3.0 在编译的时候做了一些改变,有些view视图更改需要重新编译,你也可以配置运行时编译,不用每次更改都去重新生成,具体代码如下,从官方文档看到,做个记录。 Razor 编译 Razor SDK 默认启用 Razor 文件的生成时和发布时编译。 启用后,运行时编译将补充生成时编译,允许更新 Razor 文件(如果对其进行编辑)。 运行时编译 使用 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 包启用运行时编译。 要启用运行时编译,应用必须: 安装 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet 包。     a. package manager: Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation -Version 3.0.0-preview7.19365.7     b. cli:dotnet add package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation --version 3.0.0-preview7.19365.7 程序包地址: https://www.nuget.org

《ASP.NET MVC 5 网站开发之美》

南楼画角 提交于 2020-05-05 11:30:08
**《ASP.NET MVC 5 网站开发之美》 ========== ========== ========== [作者] (台) demo (台) 小朱 (台) 陈传兴 (台) 王育民 (台) 陈仕杰 [出版] 清华大学出版社 [版次] 2015年09月 第1版 [印次] 2017年03月 第2次 印刷 [定价] 128.00元 ========== ========== ========== 【第01章】 (P004) 目前网页前端技术非常多元化,开发者一定要选择容易自定义与修改的框架作为主要开发框架。 (P005) Model 可翻译为数据模型, “数据模型” 用于封装与应用程序在商业逻辑上相关的数据,以及对其数据操作的处理方法。 Model 并不依赖 View 或 Controller ,也就是说 Model 不需要知道它会如何被显示或如何被应用,只需要专注于做好数据访问、定义、验证的责任即可。 在 ASP.NET MVC 中推荐使用强类型的方式设计 Model 层,才可以有效地利用内建的模型绑定 (Model Binding) 与模型验证机制。 (P007) 在项目初期设计的时候建议将用户接口层和商业逻辑层明确地分离开,后续在开发上也会比较顺手。 (P010) 开发人员可以在同一项目中增加许多核心引用。 (P011) Single Page Application

ASP.NET Core 中的Ajax全局Antiforgery Token配置

馋奶兔 提交于 2020-05-04 10:56:03
前言 本文基于官方文档 《在 ASP.NET Core 防止跨站点请求伪造 (XSRF/CSRF) 攻击》 扩展另一种全局配置Antiforgery方法,适用于使用ASP.NET Core Razor + JQuery Ajax的项目,喜欢玩前后端分离的同学可以酌情参考,但希望不要对XSRF/CSRF掉以轻心,更不要不做处理。 Antiforgery Token 介绍 跨站点请求伪造(XSRF/CSRF)攻击跟浏览器中登录验证之后保存的Cookie有关,恶意站点通过向攻击目标站点发起非法请求时,浏览器按规则是会带上Cookie信息的,此时被攻击站点就会认为是用户操作行为,如果被利用在修改密码等操作上,对用户的信息安全就会带来威胁。为抵御 CSRF 攻击最常用的方法是使用同步器标记模式(STP)。 而Antiforgery Token(防伪令牌)是ASP.NET Core中的STP实现方案。 STP的防御过程: 服务器发送到客户端的当前用户的标识相关联的令牌。 客户端返回将令牌发送到服务器进行验证。 如果服务器收到与经过身份验证的用户的标识不匹配的令牌,将拒绝请求。 熟悉ASP.NET和ASP.NET Core的同学应该都不陌生,因为在ASP.NET时期就有防止XSRF攻击的方法,ASP.NET MVC中,IHtmlHelper.BeginForm默认情况下生成防伪令牌,而ASP

ASP.NET Core 防止跨站请求伪造(XSRF/CSRF)攻击 (转载)

半世苍凉 提交于 2020-05-04 10:22:06
什么是反伪造攻击? 跨站点请求伪造(也称为XSRF或CSRF,发音为see-surf)是对Web托管应用程序的攻击,因为恶意网站可能会影响客户端浏览器和浏览器信任网站之间的交互。这种攻击是完全有可能的,因为Web浏览器会自动在每一个请求中发送某些身份验证令牌到请求网站。这种攻击形式也被称为 一键式攻击 或 会话控制 ,因为攻击利用了用户以前认证的会话。 CSRF攻击的示例: (1)用户登录 www.example.com,使用表单身份验证。 (2)服务器对用户进行身份验证,并作出包含身份验证Cookie的响应。 (3)用户访问恶意网站。 恶意网站包含类似于以下内容的HTML表单: < h1 > You Are a Winner! </ h1 > < form action ="http://example.com/api/account" method ="post" > < input type ="hidden" name ="Transaction" value ="withdraw" /> < input type ="hidden" name ="Amount" value ="1000000" /> < input type ="submit" value ="Click Me" /> </ form > 请注意,表单的Action属性将请求发送到易受攻击的网站

ASP.NET Core 认证与授权[7]:动态授权

假如想象 提交于 2020-05-02 09:07:06
原文: ASP.NET Core 认证与授权[7]:动态授权 ASP.NET Core 中基于策略的授权旨在分离授权与应用程序逻辑,它提供了灵活的策略定义模型,在一些权限固定的系统中,使用起来非常方便。但是,当要授权的资源无法预先确定,或需要将权限控制到每一个具体的操作当中时,基于策略的授权便不再适用,本章就来介绍一下如何进行动态的授权。 目录 基于资源的授权 定义资源Requirement 实现资源授权Handler 调用AuthorizationService 基于权限的授权 定义权限项 定义权限Requirement 实现权限授权Handler 使用策略授权 自定义授权过滤器 在视图中使用授权 基于资源的授权 有些场景下,授权需要依赖于要访问的资源,例如:每个资源通常会有一个创建者属性,我们只允许该资源的创建者才可以对其进行编辑,删除等操作,这就无法通过 [Authorize] 特性来指定授权了。因为授权过滤器会在我们的应用代码,以及MVC的模型绑定之前执行,无法确定所访问的资源。此时,我们需要使用基于资源的授权,下面就来演示一下具体是如何操作的。 定义资源Requirement 在基于资源的授权中,我们要判断的是用户是否具有针对该资源的某项操作,因此,我们先定义一个代表操作的 Requirement : public class MyRequirement :