ASP.NET MVC5--杂学

1.在默认的MVC中,是根据路由来显示的。例如:

通过这个链接,

@Html.ActionLink("Edit", "Edit", new { id=item.ID }) 

*The Html object is a helper that‘s exposed using a property on the System.Web.Mvc.WebViewPage base class. TheActionLink method of the helper makes it easy to dynamically generate HTML hyperlinks that link to action methods on controllers. The first argument to the ActionLink method is the link text to render (for example,<a>Edit Me</a>). The second argument is the name of the action method to invoke (In this case, the Edit action). The final argument is an anonymous object that generates the route data (in this case, the ID of 4).

这段话的意思是:ACtionLink方法帮我们自动生成了HTML超链接,去定向到控制器的方法中。第一个参数是链接的文本,第二个参数是要链接的方法,第三个参数是一个匿名对象,可以生成路由数据(在这个例子中,Id为4).

路由代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 using System.Web.Routing;
 7
 8 namespace MvcMovie
 9 {
10     public class RouteConfig
11     {
12         public static void RegisterRoutes(RouteCollection routes)
13         {
14             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
15
16             routes.MapRoute(
17                 name: "Default",
18                 url: "{controller}/{action}/{id}",
19                 defaults: new { controller = "Movies", action = "Index", id = UrlParameter.Optional }
20             );
21         }
22     }
23 }

路由代码

2.我们注意到:这里的地址栏中是根据路由来的,我们也可以通过使用QueryString的方式来定制地址栏显示的地址。You can also pass action method parameters using a query string. For example, the URLhttp://localhost:1234/Movies/Edit?ID=3 also passes the parameter ID of 3 to the Edit action method of the Moviescontroller.

*首先:我们打开控制器Movie,找到Edit方法。

 1     // GET: Movies/Edit/5
 2         public ActionResult Edit(int? id)
 3         {
 4             if (id == null)
 5             {
 6                 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
 7             }
 8             Movie movie = db.Movies.Find(id);
 9             if (movie == null)
10             {
11                 return HttpNotFound();
12             }
13             return View(movie);
14         }
15
16         // POST: Movies/Edit/5
17         // 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关
18         // 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。
19         [HttpPost]
20         [ValidateAntiForgeryToken]
21         public ActionResult Edit([Bind(Include = "ID,Title,ReleaseDate,Genre,Price")] Movie movie)
22         {
23             if (ModelState.IsValid)
24             {
25
26                 db.Entry(movie).State = EntityState.Modified;
27                 db.SaveChanges();
28                 return RedirectToAction("Index");
29             }
30             return View(movie);
31         }

Edit方法

*The Bind attribute is another important security mechanism that keeps hackers from over-posting data to your model. You should only include properties in the bind attribute that you want to change.

这句话的意思是:Bind属性是一个很重要的安全机制,它可以防止黑客post数据到你的Model中,你应该只包含你要修改的字段到bind里面。

*The ValidateAntiForgeryTokenattribute is used to prevent forgery of a request and is paired up with @Html.AntiForgeryToken() in the edit view file (Views\Movies\Edit.cshtml), a portion is shown below:  (这句话的意思是,ValidateAntiForgeryToken属性,和编辑视图里面的@Html.AntiForgeryToken()方法,共同用来防止一个伪造的请求)

*@Html.AntiForgeryToken() generates a hidden form anti-forgery token that must match in the Edit method of the Movies controller. You can read more about Cross-site request forgery (also known as XSRF or CSRF) in my tutorial XSRF/CSRF Prevention in MVC.(这句话的意思是:@Html.AntiForgeryToken()生成了一个隐藏域,而且必须要和控制器中的对应方法匹配)

*Run the application and navigate to the /Movies URL. Click an Edit link. In the browser, view the source for the page. The HTML for the form element is shown below.(运行项目,查看源文件,)

3.我们在编辑的时候,不能编辑价格像类似这样用逗号分隔的”22,55“而是只能是22.55,这里有个解决方案:

1 Note to support jQuery validation for non-English locales that use a comma (",") for a decimal point, and non US-English date formats, you must include globalize.js and your specific cultures/globalize.cultures.js file(from https://github.com/jquery/globalize ) and JavaScript to use Globalize.parseFloat. You can get the jQuery non-English validation from NuGet. (Don‘t install Globalize if you are using a English locale.)

Note

1 1.From the Tools menu click Library Package Manager, and then click Manage NuGet Packages for Solution.
2
3 2.On the left pane, select Online. (See the image below.)
4
5 3.In the Search Installed packages input box, enter Globalize.

Click Install. The Scripts\jquery.globalize\globalize.js file will be added to your project. The Scripts\jquery.globalize\cultures\ folder will contain many culture JavaScript files. Note, it can take five minutes to install this package.The following code shows the modifications to the Views\Movies\Edit.cshtml file:

 1 @section Scripts {
 2     @Scripts.Render("~/bundles/jqueryval")
 3
 4 <script src="~/Scripts/globalize/globalize.js"></script>
 5 <script src="~/Scripts/globalize/cultures/[email protected](System.Threading.Thread.CurrentThread.CurrentCulture.Name).js"></script>
 6 <script>
 7     $.validator.methods.number = function (value, element) {
 8         return this.optional(element) ||
 9             !isNaN(Globalize.parseFloat(value));
10     }
11     $(document).ready(function () {
12         Globalize.culture(‘@(System.Threading.Thread.CurrentThread.CurrentCulture.Name)‘);
13     });
14 </script>
15 <script>
16     jQuery.extend(jQuery.validator.methods, {
17         range: function (value, element, param) {
18             //Use the Globalization plugin to parse the value
19             var val = Globalize.parseFloat(value);
20             return this.optional(element) || (
21                 val >= param[0] && val <= param[1]);
22         }
23     });
24     $.validator.methods.date = function (value, element) {
25         return this.optional(element) ||
26             Globalize.parseDate(value) ||
27             Globalize.parseDate(value, "yyyy-MM-dd");
28     }
29 </script>
30 }

还要在web配置文件中,添加这一行代码;

1  <system.web>
2     <globalization culture ="en-US" />
3     <!--elements removed for clarity-->
4   </system.web>
时间: 2024-10-16 18:07:42

ASP.NET MVC5--杂学的相关文章

ASP.NET MVC5快速入门--MyFirstWeb并发布到Windows Azure上

博主刚刚学习ASP.NET MVC5,看着微软的文档一点点学,就把FirstWeb的建立展示一下下啦,本次建立一个带个人身份验证的例子(即有注册登录机制的动态网页),开始,啦啦啦~~ 新建一个项目,选择web->asp.net,如图 确定之后,确保如图信息被选中 确定之后会看见下面页面,资源组可以不新建,就我理解资源组就是类比于我们计算机上的文件夹,我这里使用我原来建立的资源组,数据库服务器没有就要新建一个,建立完成之后,输入自己的数据库密码,要记住这个数据库密码啊~~ 确定之后得到的解决方案文

Asp.Net MVC5入门学习系列②

原文:Asp.Net MVC5入门学习系列② 添加一个Controller(控制器) 因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用来便于我们的开发,要是对MVC概念还有点模糊的,可以去我以前写的第一话 Asp.Net MVC 3.0[Hello World!]里开始部分就对此做了阐述.假定所有跟我一起学的都了解MVC的这么一个概念,我们就开始下面的步骤了: 现在我们开始添加一个Controller,具体如下: 我们选择创建一个

学习ASP .NET MVC5官方教程总结(七)Edit方法和Edit视图详解

学习ASP .NET MVC5官方教程总结(七)Edit方法和Edit视图详解 在本章中,我们研究生成的Edit方法和视图.但在研究之前,我们先将 release date 弄得好看一点.打开Models\Movie.cs 文件.先添加一个引用: <span style="font-size:14px;">using System.ComponentModel.DataAnnotations;</span> 然后在Movie类中添加以下代码: [Display(

学习ASP .NET MVC5官方教程总结(六)通过控制器访问模型的数据

学习ASP .NET MVC5官方教程总结(六)通过控制器访问模型的数据 在本章中,我们将新建一个MoviesController 控制器,并编写获取电影数据的代码,使用视图模板将数据展示在浏览器中. 在进行下一步之前,你需要先编译应用程序,否则在添加控制器的时候会出错. 在解决方法资源管理器的Controllers文件夹右键,选择"添加">"新建搭建基架项": 在"添加支架"对话框,选择 包含视图的MVC 5控制器(使用 En),然后单击

ASP.NET MVC5(二):控制器、视图与模型

前言 本篇博文主要介绍ASP.NET MVC中的三个核心元素:控制器.视图与模型,以下思维导图描述了本文的主要内容. 控制器 控制器简介 在介绍控制器之前,简单的介绍一下MVC工作原理:URL告知路由机制该使用哪个控制器(Controller),调用该控制器中的哪个方法(Action),并为该方法提供需要的参数.控制器响应用户的输入,在响应时修改模型(Model),并决定使用哪个视图(View),并对该视图进行渲染.注意:MVC模式提供的是方法调用结果,而不是动态生成的页面. 以上内容对于初学者

ASP.NET MVC5(一):ASP.NET MVC概览

ASP.NET MVC概览 ASP.NET MVC是一种构建Web应用程序的框架,它将一般的MVC(Model-View-Controller)模式应用于ASP.NET框架. ASP.NET MVC模式简介 MVC将Web应用程序划分为三个主要的部分,以下是MSDN给出的定义: 模型(Model):模型对象是实现应用程序数据域逻辑的应用程序部件. 通常,模型对象会检索模型状态并将其存储在数据库中. 例如,Product 对象可能会从数据库中检索信息,操作该信息,然后将更新的信息写回到 SQL S

ASP.NET MVC5(三):表单和HTML辅助方法

表单的使用 Action和Method特性 Action特性用以告知浏览器信息发往何处,因此,Action特性后面需要包含一个Url地址.这里的Url地址可以是相对的,也可以是绝对的.如下Form标签向Bing的search页面发送一个搜索词(输入元素的名称为q). <form action="http://www.bing.com/search"> <input name="q" type="text" /> <i

学习ASP .NET MVC5官方教程总结(八)搜索查询

学习ASP .NET MVC5官方教程总结(八)搜索查询 在本节中,我们为 Index 方法添加查询功能,使我们能够根据电影的题材或名称进行查找. 首先,我们需要更新 MoviesController 的 Index 方法,代码如下: public ActionResult Index(string searchString) { var movies = from m in db.Movies select m; if (!String.IsNullOrEmpty(searchString))

ASP.NET MVC5 PagedList分页

ASP.NET MVC是目前ASP.NET开发当中轻量级的Web开发解决方案,在ASP.NET MVC概述这篇译文当中,已经详细的介绍了ASP.NET MVC与Web Forms的区别以及各自的适用场景.由于ASP.NET MVC尤其适合网站的开发(Web Forms更适合业务系统的开发),目前成为很多网站开发者的首先框架. 这里举个典型的例子(表格的分页),以此熟悉一下ASP.NET MVC的开发.开发环境:Windows 8.1企业版+VS2013旗舰版+SQL Server 2014. 首

[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 MVC]Asp.net MVC5系列——从控制器访问模型中的数据 [Asp.net MVC]Asp.net MVC5系列——添加数据 概述 上篇文章中介绍了添加数据,在提交表单的数据的时候,我们需