随笔分类 - MVC 3
摘要:问题出现在POST方法中,当我要将数据提交到后台的时候,绑定的变量值为null原因是视图中的名称跟Controller中的视图的名称不一致造成的。假如你视图中的Model采用的是Html.LabelFor(model=>model.Username)这样的方式,那么你对应的Controller中参数也应该为对应的数据才可以即:[HttpPost]public ActionResult XXX(T model){.....................}
阅读全文
摘要:自己封装了一个类库,本来是想方便自己重复使用的,代码如下: 1 /// <summary> 2 /// 写入配置文件的值 3 /// </summary> 4 /// <param name="key">key键</param> 5 /// <param name="value">value值</param> 6 /// <returns>写入成功返回true,否则返回false,有异常</returns> 7 public static bool Write
阅读全文
摘要:使用Razor视图需要注意的几点:1. Razor使用@符作为动态编码的标记,默认情况下,所有的Htm标记都会被转码以防止XSS跨站攻击。如要使用HTML,请使用MvcString类。
阅读全文
摘要:开始之前,先补习一下params关键字的用法:paramsparams关键字可以指定在参数数目可变处采用参数的方法参数。在方法声明中的params关键字之后不允许任何其他参数,并且在方法声明中只允许一个params关键字首先自定义View 1 public class DebugView:IView 2 { 3 public void Render(ViewContext viewContext, System.IO.TextWriter writer) 4 { 5 Write(writer, "-----RouteData--...
阅读全文
摘要:MVC 3 允许创建自己的视图引擎而不使用自带的Razor视图或者APSX视图。下面就介绍一下如何创建自定义的视图引擎。首先,View Engine 继承于 IViewEngine接口。IViewEngine接口的定义如下:1 public interface IViewEngine {2 ViewEngineResult FindView(ControllerContext controllerContext, string viewName,3 string masterName, bool useCache);4 ViewEngineResult FindPartialView(Cont
阅读全文
摘要:System.InvalidOperationException: This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet.由错误信息可知MVC2出于对网站数据的保护,默认禁止通过get的请求返回JsonResult数据,你可以在返回Json时,传入第二个参
阅读全文
摘要:Area 是Route中类似命名空间的概念,可以将多个有controller、view、route组成的集合分开,在相对大的项目中比较有用。1.创建Area新建一个MVC项目,在解决方案上面右键“添加Area”。添加后,你会发现解决方案里面多了一个顶级目录Area,下面是一个小的MVC项目。2.注册Area在Application_Start()方法里,AreaRegistration.RegisterAllAreas();3.在地址栏中输入Area/Controller/Action即可访问Area中的Controller等内容。4.默认情况下,你需要在路由注册里面加入命名空间以防止出现相同
阅读全文
摘要:一、 自定义路由需要继承RouteBase类RouteBase类有两个抽象方法:1.GetRouteData和GetVirtualPathGetRouteData用于重构RouteData数据,GetVirtualPath用于重写产生的URL。下面通过一个例子来说明如何自定义自己的路由:1. 新建一个ControllerView Code 1 namespace URLsAndRoutes.Controllers {2 public class LegacyController : Controller {3 public ActionResult GetLegacyURL(string le
阅读全文
摘要:1. 指定Controller、ActionRoutes.MapRoute("","{controller}/{action}");匹配:http://www.xxx.com/home/Index.2.带默认参数指定Routes.MapRoute("","{controller}/{action}",new {controller="Home",action="Index"});匹配:http://www.xxx.com/home/Index.http://www.xxx.c
阅读全文
摘要:采用CodeFirst模式开发过程中避免不了实体类跟数据库字段不匹配的问题。例如:在程序中定义了Product类 public class Product { [HiddenInput(DisplayValue=false)] public int ProductID { get; set; } [Required(ErrorMessage="Please enter a product name")] public string Name { get; set; } [Required(ErrorMessage="P...
阅读全文
摘要:配置文件中的 passwordFormat 需要设置成 clear.
阅读全文
摘要:在.NET MVC3 Framework 示例项目中,有如下代码:public class Product { [HiddenInput(DisplayValue=false)] public int ProductID { get; set; } public string Name { get; set; } [DataType(DataType.MultilineText)] public string Description { get; set; } public decimal Price {...
阅读全文
摘要:1.第一步,创建实体类。namespace MyMusicStore.Entities{ /// <summary> /// Song /// </summary> public class Song { public int id { get; set; } public string name { get; set; } public string address { get; set; } public string singer { get; set; } public string a...
阅读全文
摘要:在《Pro MVC3 Framework》的示例项目中,导航栏中的链接地址形式为: http://xxx/?category=watersport书中的代码示例:Nav Controller中的代码示例public class NavController : Controller { private IProductRepository repository; public NavController(IProductRepository repo) { repository = repo; } ...
阅读全文
摘要:VS2012 与 VS 2010 不同的地方是在发布网站的时候VS2012的界面会让人有种摸不着头脑的感觉。下面是如何将ASP.NET 网站发布到本地IIS上的步骤。第一步,右键解决方案管理器中的网站项目,选择发布按钮。第二步,在弹出的界面中“选择或导入一个发布配置文件” 下拉框中选择“新建”(上面会有微软AZURE服务的链接,这里不需要,直接跳过)第三步,在连接选项中配置好你的网站地址,本地就写localhost。(你需要提前在IIS中新建一个网站,并配置好该网站的虚拟路径等设置)然后点击下一步第四步,这里选择Release 版本的设置,然后下一步最后一步,点击“发布”,网站发布成功!
阅读全文
摘要:新的一年,新的开始。今天总结的主题是在MySql中应用EntityFramework 的Code First模式。开发环境:Win8 + MySql5.5 +VS 2012.第一步是在数据库中新建一个表,具体字段如下图。在表中添加若干数据:数据建好之后,下面就是在项目中引用EntityFramework了。二,在项目中新建一个实体类Product public class Product { public int ProductID { get; set; } public string Name { get; set; } public string Description { get; s
阅读全文
摘要:从数据库中读出的数据,包含有换行符和回车符,在后台对\r\n替换为<br/>之后,前台页面没有像想象中的那样换行,反而是将<br/>以字符串的方式显示了出来。费了大半天以为是HTML编码格式的问题,后来经同学提示,才明白原来是MVC中为了防止跨站攻击自动将<>&等字符转义成了<br/&rt;在网上查过资料,应用MVCString()方法后,显示正常。
阅读全文
摘要:在介绍Entity Framework的修改实体到数据库的方法之前呢,我们先简要的介绍一下ObjectContext的处理机制。1、ObjectContext的处理机制ObjectContext是Entity Framework封装了数据库访问的上下文,以及实体的映射关系元数据信息等。EF帮我们封装好了这么一个统一的接口。让我们所有的操作都只通过这个一个实体上下文就可以实现了增删查改等所有对应数据库的操作。当然,我们要了解EF的生成SQL的机制我们才能更好的使用EF帮我们生成效率更高的SQL脚本。看一个实例:下图所示项目截图与实体模型图(一个简单的例子)然后看下面一段代码:static voi
阅读全文
摘要:需要在这三者中统一,例如UTF8,1. MYSQL: 保证所有的的列都是UTF8格式.2. VS2010: 在data server建立连接时,选择advance,将chracterset设成utf8,这样在VS2010里查看和更改MYSQL中的数据时,就不会因为不匹配而看到一大堆的乱码了.3. Entity Framework:我们的页面是用EF去连接MYSQL的,这里面也要设置. a. 用一个DATASOURCE尝试建立一个连接,并把连接字符串保存在web.config中,和前面建立连接一样,将characterset设成utf8,之在web.config中可以检查一下,例如:<ad
阅读全文
摘要:从数据库中取出的Int类型的ID,在Razor视图中显示的链接地址格式为:http://localhost:1846/news/Detail/1Router格式:{controller/action/id}数据库中对应的字段为ID,对应的Action中的参数名也必须为ID否则 编译器会报参数值为Null的错误。当数据库中取出的参数为字符型的时候,URL的格式将为http://localhost:1846/news/Detail?NewsID=1;这时候同样要求Action的参数名跟URL中的参数名保持一致。
阅读全文