<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[朱傲宇的技术博客]]></title><description><![CDATA[学识浅薄，多多指教]]></description><link>https://blog.youkuaiyun.com/smumuy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; smumuy]]></copyright><item><title><![CDATA[MVC JsonResult的用法]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109339347</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109339347</guid><author>smumuy</author><pubDate>Mon, 09 Nov 2020 10:48:37 +0800</pubDate><description><![CDATA[JsonResult类可以将对象转换为json格式返回的类
使用post方法即可以读取json数据，默认get方法不可以读取。
下面我们来写两个数据，一个是自定义的，一个是从数据库取出来的数据，使用get方法转换为json数据的结果（添加特定代码，即可以通过url调用action，并得到json数据）

我们通过url进行访问，结果如下所示。


即我们输入的数据后，再获取就能得到json数据的格式。
友情提醒，为了数据安全，最好不要开放get方式的请求许可。

...]]></description><category></category></item><item><title><![CDATA[MVC javascriptresult的应用]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109339881</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109339881</guid><author>smumuy</author><pubDate>Sat, 07 Nov 2020 14:48:05 +0800</pubDate><description><![CDATA[在mvc里，可以使用javascriptresult类完成js代码的调用。
如下所示，创建一个类，并输入js的代码。

创建完成后就是调用问题了，在需要调用的html界面，在引用jq代码的下面，输入如下代码完成对这个类里js代码的调用。

因为html代码的调用是自上而下，因此，写调用代码的时候写下在引用jq代码的下面，否则未引用jq代码会导致引用代码无效果。
在浏览器输入html对应url效果如下所示，看到我们的js代码已经被调用


...]]></description><category></category></item><item><title><![CDATA[MVC 表单和HTML辅助方法（2）dropdownlist和listbox]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109476665</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109476665</guid><author>smumuy</author><pubDate>Thu, 05 Nov 2020 11:01:15 +0800</pubDate><description><![CDATA[上一节我们展示了一些表单的常用控件，现在我们来在表单里添加dropdownlist和listbox。
第一步，添加数据源
这里我的数据源是与项目分开的，我把所有跟数据库等数据有关的都单放在一个类库文件里，不知道类库怎么创建引用的同学参考文章：ASP.NET MVC项目——类库项目的引用。
在类库项目里添加bll文件夹，在bll文件夹里新增listhelper类。把dropdownlist和listbox的数据源文件就写在listhelper类里。
因为我是在类库文件夹加数据源，所以需要先添加MVC的引用，然]]></description><category></category></item><item><title><![CDATA[MVC FileResult的用法]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109334849</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109334849</guid><author>smumuy</author><pubDate>Wed, 04 Nov 2020 16:18:41 +0800</pubDate><description><![CDATA[在MVC中，fileresult多用于文件下载，下面我来演示下文件的下载案例
首先，我们在解决方案里添加我们要上传的文件，例如我添加的就是一个名为text的txt类型文件。

然后，创建一个fileresult，名称为download，在代码里首先写的是路径名，其次写的是文件的类型，最后写的是下载时出现的名称。
因为我是在根目录里的txt，所以我的路径为~/text.txt。
txt文件类型对应的代码为text/plain，如果你穿的不是txt文件，时候ppt或其他类型，你可以百度:MIME 参考手册，如下]]></description><category></category></item><item><title><![CDATA[MVC网页跳转方式]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109315196</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109315196</guid><author>smumuy</author><pubDate>Tue, 03 Nov 2020 18:32:09 +0800</pubDate><description><![CDATA[在mvc里，我们创建了action后，如果想跳转到不同的网页，有两种方式提供选择。
第一种，通过url进行跳转
即RedirectResult("/控制器名/action名");
第二种，通过路由进行跳转
即在RedirectToAction( “action的名”, “控制器的名”)

相比较第一种方法，第二种更好一点。因为我们常规的路由规则是先输入控制器名后actio名，如下图所示。

当路由规则改变了，即先action名，后控制器名，则第一种方法就会失效。因此个人建议第二种方法跳转。

...]]></description><category></category></item><item><title><![CDATA[MVC 表单和HTML辅助方法（1）]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109466404</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109466404</guid><author>smumuy</author><pubDate>Tue, 03 Nov 2020 16:10:49 +0800</pubDate><description><![CDATA[在mvc的视图view里，创建表单时可以使用系统提供的方法快捷创建表单，这里，我们创建一个表，并与传统的html元素中的表单做对比。
第一步，创建表单
创建一个view控制器，在控制器里为名为Index的action创建视图。视图里添加表单。
一些注意事项我在截图的注释里也展示了。

第二步，传输数据
这里我们把Index视图里表单的数据提交的到submit,并不是本视图，所以我们在控制器里创建submit，但由于是post请求获取数据，所以我们submit获取的数据需要再创建一个视图进行展示，因为我们又创]]></description><category></category></item><item><title><![CDATA[.NET Core的路由访问规则]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109426028</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109426028</guid><author>smumuy</author><pubDate>Sun, 01 Nov 2020 14:54:41 +0800</pubDate><description><![CDATA[.net core的路由有两种
一种是使用系统命名的默认，即域名+controller+action
如访问homecontroller里的index，则url为：域名/home/index
另一种就是用户自定义的路由，即使用[Route(“名称”)]自定义controller和action的名称。
如下面代码所示，我定义了Home的名称为Home1。把输入为1234的界面设为Index。

我们在url中输入：域名/Home1/Index

使用自定义的路由还有一点好处是可以加一些验证。
例如我们正常访问]]></description><category></category></item><item><title><![CDATA[.NET Core的路由知识]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109412256</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109412256</guid><author>smumuy</author><pubDate>Sun, 01 Nov 2020 11:02:56 +0800</pubDate><description><![CDATA[首先我们要知道我们.net core的url访问规则
我们所有的请求都是先交给服务器，然后由服务器交给controllers进行处理
所以我们的url命名规则是域名+controller名+action名+参数（可以省略）
在.net core中，如果直接访问域名，默认返回的是系统里的hello world。
我们想让系统访问我们的域名时默认跳到我们想让用户看到得action怎么处理呢？
第一步是先注入MVC服务器组建依赖。
即在Startup.cs文件里添加如下代码
这里我添加MVC依赖的代码有点长，目的]]></description><category></category></item><item><title><![CDATA[MVC Redirect方法的应用]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109315738</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109315738</guid><author>smumuy</author><pubDate>Wed, 28 Oct 2020 15:37:13 +0800</pubDate><description><![CDATA[ContentResult对应方法Content，返回自定义文件类型返回文本内容。

]]></description><category></category></item><item><title><![CDATA[MVC PartialviewResult的使用方法]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109312846</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109312846</guid><author>smumuy</author><pubDate>Tue, 27 Oct 2020 22:17:11 +0800</pubDate><description><![CDATA[PartialviewResult 对应的方法PartialView，去执行某个视图（不套用母版），把视图结果返回。多用于嵌套在其他视图做展示。
我们来看一下普通的View和PartialView的区别。
首先我们创建一个action，然后创建一个视图，多余的代码不添加，如下图所示

创建的视图里默认只有一个Html标签。我们运行的结果如下所示。在浏览器里自动加了一个头，一个尾，这就是套用的母版。

接下来我们修改下代码，返回不套用母版的视图。
即改为PartialView;

运行的结果如下所示。没有套用]]></description><category></category></item><item><title><![CDATA[MVC ViewResult的三种应用]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109310962</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109310962</guid><author>smumuy</author><pubDate>Tue, 27 Oct 2020 16:46:21 +0800</pubDate><description><![CDATA[第一种是控制器什么都不返还给视图
return View();不返回给视图任何值；

第二种是返回给视图一个强类型数据
这种一般用于展示数据库的数据。
先定义一个变量接收数据，然后return数据，并且，在创造View时选择抢类型数据，根据需要选择不同的强类型。
如下面这段代码，我从数据库里查出一个图书列表，则向视图传递这个列表。在创建视图时，因为要展示，所以我在模板选项中选择了List，并且数据来源选择了我自己定义的数据来源。

第三种是返回不同的视图
在默认情况下，视图返还为与action同名的视图，但]]></description><category></category></item><item><title><![CDATA[.NET Core 里 普通类如何变成API控制器类]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109225479</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109225479</guid><author>smumuy</author><pubDate>Mon, 26 Oct 2020 09:09:15 +0800</pubDate><description><![CDATA[首先，我们来创建一个普通类与API控制器接口类作对比。下图所示，是一个刚创建的普通类。

我们创建一个空的API接口类。如下图所示，相比于普通类，最大的区别是在先使用Route标明地址，然后在类名后面继承了控制器类。

所以，我们的普通类要想改变为API控制器类，首先第一步就是标明自己的地址，
即使用[Route(“自定义位置”)]。其次，是声明自己是一个API控制器类，声明方式分为三种，下面一一列举。
第一种：直接声明法
即在类上面写上[Controller]表示类是一个API控制器接口类

第二种：继承]]></description><category></category></item><item><title><![CDATA[MVC缓存过滤器之数据库缓存]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109199001</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109199001</guid><author>smumuy</author><pubDate>Sat, 24 Oct 2020 08:25:50 +0800</pubDate><description><![CDATA[对于一些数据库更新慢的网站，为了减缓服务器压力，我们可以设置为数据器缓存，在设置的规定时间内，若数据库没有更新，则刷新请求不会传到服务器。若规定时间内数据库数据变动，则以表动后的第一次刷新请求为准，重新计时。
第一步，配置数据库的缓存功能。
我们首先找到cmd，并以管理员的身份运行。

然后在cmd里输入如图所示的代码。
Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regsql.exe 表示文件位置，-S 后面是服务器名，-U 后面是连接服务器的登]]></description><category></category></item><item><title><![CDATA[MVC缓存过滤器的使用]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109189440</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109189440</guid><author>smumuy</author><pubDate>Fri, 23 Oct 2020 07:52:15 +0800</pubDate><description><![CDATA[相关属性介绍
Duration 缓存内容过期时间（秒）
Location 缓存的位置（客户端/服务器）
VaryByParam 通过客户端请求参数的不同值来缓存多份数据
VaryByHeader 通过RequestHeader的参数的不同取值来缓存多份数据
CacheProfile 将缓存配置写到配置文件中，引用配置文件的配置属性
SqlDependency 数据库缓存，缓存依赖的表名
使用缓存过滤器可以减少服务器高并发的压力
用法1：设置缓存内容周期
如下图所示，在需要缓存得action上方写上如下所示代]]></description><category></category></item><item><title><![CDATA[MVC使用异常过滤器处理异常]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109209403</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109209403</guid><author>smumuy</author><pubDate>Thu, 22 Oct 2020 18:17:05 +0800</pubDate><description><![CDATA[在mvc的开发过程中，我们可能会遇到一些代码错误导致的异常，如下图所示，展示了一个除数为0的异常。

在mvc里，自动为我们提供了一种异常处理器，并且应用在所有控制器上。

我们开发时所有的错误都由它捕捉并展示，因此我们看到运行这个action的界面如下所示。

在给用户使用之后，可能还会出现其他错误，这样处理错误的界面客户可能并不喜欢。因此我们可以把错误的界面处理下，自定义一个异常处理器并配置异常处理的action界面。
第一步，先创建一个异常处理过滤器。
在Filters文件夹里创建类，类名为 自定义+]]></description><category></category></item><item><title><![CDATA[MVC使用动作过滤器和结果过滤器计算action和view运行花费的时间]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109188077</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109188077</guid><author>smumuy</author><pubDate>Thu, 22 Oct 2020 14:24:06 +0800</pubDate><description><![CDATA[首先，我们来使用动作过滤器计算action运行需要的时间
第一步，创建动作过滤器。
在项目里创建Filters文件夹用于存放过滤器，然后创建后缀为Attribute的类名，我创建的是myActionAttribute.cs。在创建的类名后面添加接口FilterAttribute（需要using引入命名空间）和IActionFilter表明是动作过滤器。
选中IActionFilter，右键，快速操作和重构，实现接口，就快快速创建两个方法，一个用于执行action之前。一个用于执行action之后。如下图所示]]></description><category></category></item><item><title><![CDATA[MVC授权过滤器的应用]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109183707</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109183707</guid><author>smumuy</author><pubDate>Wed, 21 Oct 2020 20:30:38 +0800</pubDate><description><![CDATA[MVC过滤器的应用分文三种。
例如我们已经创建了一个名为diyAuthAttribute的过滤器用于判断用户是否登录。如下图所示。

第一种：单个action应用
在控制器里找到对应的action，在上面写上过滤器名，如下图所示，此控制器内所有action只有booklist具有过滤器。

第二种：单个控制器内的所有action具有过滤器。
在控制器名称上面添加过滤器名，如下图所示，在store这个控制器里所有的action都具有过滤器。

第三种，解决方案里所有的控制器里的所有action里都具有过滤器。]]></description><category></category></item><item><title><![CDATA[MVC简单的登录验证实例]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109181993</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109181993</guid><author>smumuy</author><pubDate>Wed, 21 Oct 2020 08:18:33 +0800</pubDate><description><![CDATA[在开始实例之前，我们应该先准备好一个可以访问的控制器，并创建action和对应的视图，我们假设这个action是我们登陆后要访问的界面。（本文以store控制器的bookliset为目标action）
第一步，创建控制器，右键点击自己的项目名，创建文件夹Filters，在此文件夹里创建类，命名格式为 自定义文字+Atttibute.cs,例我创建的类名为diyAuthAttribute.cs.
代码如下所示，diyAuthAttribute后面的FilterAttribute表示是控制器，IAuthoriz]]></description><category></category></item><item><title><![CDATA[MVC动作名称选择器]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109171507</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109171507</guid><author>smumuy</author><pubDate>Tue, 20 Oct 2020 19:31:46 +0800</pubDate><description><![CDATA[当ActionInvoker选取Controller中Action时，默认会应用反射机制找到相同名字的方法，这个过程就是动作
名称选择器（Action Name Selector）运作的过程，选择查找过程对Action的名称字符大小写不进行区分。
代码：
public class EmptyTemplateController : Controller
{
public ActionResult Index()
{
return View();
}
}
有时，可能需要修改已完成方法的Action名称，但并不]]></description><category></category></item><item><title><![CDATA[MVC控制器概述]]></title><link>https://blog.youkuaiyun.com/smumuy/article/details/109170939</link><guid>https://blog.youkuaiyun.com/smumuy/article/details/109170939</guid><author>smumuy</author><pubDate>Tue, 20 Oct 2020 10:34:18 +0800</pubDate><description><![CDATA[ASP.NET MVC的核心就是Controller(控制器)，它负责处理客户端（常常是浏览器）发送来的所有请求，并决定将什么内容响应给客户端，通过这种方式，Controller负责响应用户的输入，并且在响应时修改Model，把数据输出到相关的View。MVC架构中的Controller主要关注应用程序流入、输入数据的处理，以及提供向View输出的数据。
控制器(Controller）本身是一个派生于Controller的类，这个类包含有多个方法，这些方法中声明为public的即被当作动作（Action）,]]></description><category></category></item></channel></rss>