C#最全最详细Nancy框架学习(常见报错,控制台应用,添加到现有ASP.Net MVC站点,ajax)

这篇博客能解决大家70%的Nancy问题

例2源码下载:https://download.csdn.net/download/qq_37791451/10678639

最近学习了Nancy框架,踩过了许多大大小小的坑,特写这篇入门博客,现在分享出来供各位同行或者有需要的人用以参考

Nancy是一个轻量级的用来创建基于HTTP的服务的框架,该框架的可以运行在.net或者mono上。 Nancy处理和mvc类似的DELETEGETHEADOPTIONSPOSTPUT,PATCH请求,如果你有mvc开发的经验相信可以快速入门。最重要的一点可以让你的Web应用脱离IIS的束缚。

1.使用Nancy的控制台应用

第一步自然是添加引用,控制台引用和.NET MVC的应用是不同的

using Nancy;using Nancy.Hosting.Self;  

Nancy框架和MVC很是相似,不过官网的定义是:Nancy是一个用于构建基于HTTP 的Web服务的框架。

我们在项目下创建Modules和Views文件夹,Modules就像MVC的Controller用来控制管理处理请求返回View中的页面(一般是.html,.cshtml,.htm文件)

控制台程序一般用于监听端口,那我们就写一个监听端口的程序 直接贴代码

Moduel代码:

代码太长就不都贴出来了,上面代码中每一个Get["/"]或Post["/"]中的["/"]都是一个路由,Nancy的路由非常灵活你可以根据路由规则随意定制,Get["/"]是默认路由,只需要在浏览器地址栏里输入localhost:50223就可以访问了,而Get["/user"]代表在浏览器输入的网址为localhost:50223/user 才可以访问,否则就会报错404。每一个Get或Post都代表这个Module可以处理的请求路由格式,每一个每一个Get或Post就是一个请求,其中第一和第二个Post代表处理TestModule类的两个方法,所以必须要返回方法名,注意后面同路径的Get或Post后覆盖前面写的,Get["/"]=a=>{return "a;"};会被后面写的Get["/"]=b=>{return "b";}; 覆盖,网页只会显示b

在浏览器输入网址打开页面默认是Get请求,如果我们在输入localhost:50233/admin 就会显示网络错误,Post请求可以用一些抓包工具比如Fildder组建请求头部发送请求

Nancy里面的所有控制器都需要继承NancyModule类,类比MVC的控制器都需要继承Controller类,同时所有的类都必须是public类,否则会报错404

=

现在我们点运行按钮会发现报左边图片的错误,这是因为控制台监听端口需要管理员权限,所以我们需要以管理员权限运行Visual Studio,然后就会出现右边图片的样子,但是当我们打开网址localhost:50223时却报了500错误,那是因为控制台在Debug运行时是不在根目录下读取文件的,你需要复制一份Views到bin/Debug目录下才可以

复制完以后我们再在浏览器中输入localhost:50233就可以直接打开Views文件夹下的Index.html了,当然你也可以不返回视图文件Index.html直接显示字符串 Get["/"] = _ => { return "hello"; }; 这样就会打开一个空白页面显示hello

同时处理路由请求也是有一定逻辑的,我们一第二个Get为例:Get["/user/{id}"]=parameters=>{...}; 中定义了一个id参数 下面写了一个判断语句,判断id是否为666,是输出All hail user 和我们输入的id! \\m/ 我们在浏览器输入localhost:50223/user/666

前台向后台用ajax传值

前台页面ajax写法不变,Nancy不支持在后台用Request接收ajax传过来的值,所以我们需要用Nancy提供的数据绑定来接收

添加引用using Nancy.ModelBinding; 

在ConsoleApp1主类中写一个第一张图中的数据类,在ajax指定url接收的方法里写接收语句

注意点和MVC差不多,ajax传过来的数据名code和定义的接收变量名相同才可以

ps:Nancy也是支持Razor视图引擎的 需要引用Nancy.Viewengines.Razor.dll,这样Nancy搜索视图的时候才会加载.cshtml文件

还有路由的知识太多了,大家自行百度一下吧,都写上篇幅太长了

2.整站都使用Nancy框架

直接新建.Net空web项目 添加 Nancy,Nancy.Hosting.Aspnet,Nancy.Viewengines.Razor 这三个引用

然后在项目下直接新建Modules,Models和Views文件夹 然后写XxxModule.cs文件,添加Index.cshtml 按F5就可以运行了

没什么好说的,也没有出错,贴一下我的环境 .Net Framework4.6.1

 

3.将Nancy添加到已有的MVC站点

在已有的mvc站点添加引用Nancy,Nancy.Hosting.Aspnet,Nancy.Viewengines.Razor

其他的不用管,打开Web.config你会发现所有的配置都配置好了

然后你只需直接在项目下直接新建Modules文件夹,Models和Views文件夹是和MVC共用的,同样也会自动寻找Views的视图文件  在浏览器地址栏输入localhost:端口/nancy就可以了 但是写XxxMoudle.cs文件的时候要继承base("/nancy")

如果解决了您的问题,希望您可以扫一个红包在走哟,互利互惠,大家好才是真的好 或者亲们可以直接打赏,谢谢QAQ

### 回答1: ASP.NET MVC是一种用于构建Web应用程序的开发框架,它使用C#作为主要的编程语言。ASP.NET MVC是微软公司推出的一种模型-视图-控制器(Model-View-Controller)架构模式的实现。 在ASP.NET MVC中,开发人员将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型是应用程序的数据层,用于处理数据逻辑和持久化数据。视图是应用程序的用户界面,用于渲染数据并向用户显示信息。控制器负责接收用户请求,并根据请求调用适当的模型和视图,并对用户请求进行处理和响应。 ASP.NET MVC具有很多优点。首先,它提供了良好的可维护性和可测试性,因为它将应用程序分为独立的组件。这使得开发人员可以轻松地对每个组件进行测试和修改,而不会对其他组件产生影响。其次,ASP.NET MVC具有丰富的功能和灵活的扩展性,开发人员可以根据项目需求自定义和扩展框架。此外,ASP.NET MVC具有良好的性能和安全性,可以处理大量并发请求,并防止网络攻击。 为了使用ASP.NET MVC进行开发,开发人员需要具备一定的C#编程知识。C#是一种面向对象的编程语言,与ASP.NET MVC紧密集成。开发人员可以使用C#编写模型、控制器和视图,并使用C#提供的丰富的类库和框架来处理数据和逻辑。C#还具有强类型和类型安全性,可以提高代码的可靠性和性能。 总而言之,ASP.NET MVC是一个强大且灵活的Web开发框架,其结合了C#编程语言和模型-视图-控制器架构模式。它提供了可维护、可测试、高性能和安全的解决方案,适用于构建各种规模的Web应用程序。 ### 回答2: ASP.NET MVC(Model-View-Controller)是一种Web应用程序开发模式,通过将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),帮助开发人员更好地分离关注点和组织代码。 模型(Model)是应用程序的核心组件,它负责处理应用程序的数据逻辑和业务逻辑。模型通常是与数据库或其他数据存储互动的组件,它负责数据的获取、处理和存储。模型可以包含实体类、数据访问层和业务逻辑处理。 视图(View)负责呈现应用程序的用户界面,它是用户与应用程序交互的地方。视图通常是由HTML和其他前端技术组成,开发者可以使用视图模板语言来动态渲染数据。视图的主要职责是显示模型中的数据,并为用户提供交互操作的界面。 控制器(Controller)负责处理用户请求和控制应用程序的流程。它接收来自用户的请求,根据请求的类型和数据,调用适当的模型进行数据处理和业务逻辑处理,最后将数据传递给视图进行展示。控制器在MVC模式中扮演了协调器的角色,它负责将用户输入映射到模型和视图之间。 ASP.NET MVC为开发人员提供了一种清晰的结构和良好的组织方式,可以更好地管理应用程序的代码和资源。使用ASP.NET MVC,开发人员可以轻松实现URL路由、权限控制、数据校验和错误处理等功能。同时,ASP.NET MVC还提供了可扩展的机制和工具,使开发人员能够定制和优化应用程序的性能和功能。 总之,ASP.NET MVC是一种优秀的Web应用程序开发框架,它通过模型-视图-控制器的设计模式,使开发人员能够更好地组织和管理代码,提高应用程序的开发效率和质量。 ### 回答3: ASP.NET MVC是一种基于MVC(Model-View-Controller)架构的Web应用程序开发框架。它结合了传统Web Forms和ASP.NET的特点,提供了一种更加灵活和可控的开发模式。 ASP.NET MVC采用了分层的开发模式,其中Model层用于处理数据的操作,View层用于展示数据,并处理用户的输入和界面交互,Controller层用于处理业务逻辑和协调Model和View之间的交互。这种分层使得各个部分的职责清晰明确,提高了代码的可维护性和可测试性。 在ASP.NET MVC中,控制器负责接收用户的请求,并根据请求的内容决定要执行哪些操作,或者调用适当的Model来处理数据。然后,控制器将处理的结果传递给View层进行展示。通过这种方式,控制器起到了桥接Model和View的作用。 ASP.NET MVC还提供了强大的路由功能,通过路由表将URL映射到对应的控制器和操作上,使得开发者可以更加灵活地定义URL和页面之间的关系。 除了以上的特点,ASP.NET MVC还具有以下优点: 1. 更加灵活:通过MVC的模式,开发者可以根据自己的需求灵活地选择使用哪些组件和功能,没有多余的开销。 2. 可测试性:因为MVC应用程序分成了独立的组件,所以每个组件都可以独立地进行测试,提高了代码的质量和稳定性。 3. 简化开发过程:ASP.NET MVC提供了很多通用的功能和组件,例如表单验证、身份验证和数据绑定等,这些可以帮助开发者快速构建应用程序。 4. 跨平台支持:ASP.NET MVC可以运行在Windows和Linux等多个平台上,为开发者提供了更多的选择。 总之,ASP.NET MVC是一个功能强大、灵活和可扩展的Web开发框架,它可以帮助开发者快速构建高质量的Web应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值