C# 如何在MVC3中取消备用控制器的选择

C#的MVC寻找对应的控制器首先是寻找当前域的

如果找不到就会寻找备用的..

但是有些时候我们是不想他去寻找备用的控制器.

这里就涉及到了一个DataToken


代码如下:

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "Reader.Controllers" }
);

我第一次是使用new string来区分,可惜他还是会去寻找.我翻阅了一些资料之后

发现如果要取消备用控制器需要这么写


代码如下:

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "Reader.Controllers" }
).DataTokens["UseNamespaceFallBack"]=false;

这样我们就取消的使用备用控制器的操作了.

另外备份一下MVC的一些公约


代码如下:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//db.ContextOptions.LazyLoadingEnabled = false;
//db.ContextOptions.ProxyCreationEnabled = false;
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//移除复数表名的契约
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
base.OnModelCreating(modelBuilder);
/*

可以删除的公约有:
Namespace:System.Data.Entity.ModelConfiguration.Conventions.Edm
• AssociationInverseDiscoveryConvention
寻找导航上互相引用的类的属性,并将它们配置为逆属性的相同的关系。
• ComplexTypeDiscoveryConvention
寻找有没有主键的类型,并将它们配置为复杂类型。
• DeclaredPropertyOrderingConvention
确保每个实体的主要关键属性优先于其他属性。
• ForeignKeyAssociationMultiplicityConvention
配置是必需的还是可选的关系基于为空性外键属性,如果包含在类定义中。
• IdKeyDiscoveryConvention
查找名为 Id 或 <TypeName> Id 的属性,并将他们配置作为主键。
• NavigationPropertyNameForeignKeyDiscoveryConvention
使用外键关系,使用 <NavigationProperty> <PrimaryKeyProperty> 模式作为属性的外观。
• OneToManyCascadeDeleteConvention
交换机上层叠删除,所需的关系。
• OneToOneConstraintIntroductionConvention
将配置为一个: 一个关系的外键的主键。
• PluralizingEntitySetNameConvention
配置为多元化的类型名称的实体数据模型中的实体集的名称。
• PrimaryKeyNameForeignKeyDiscoveryConvention
使用外键关系,使用 <PrimaryKeyProperty> 模式作为属性的外观。
• PropertyMaxLengthConvention
配置所有的字符串和字节 [] 属性,默认情况下具有最大长度。
• StoreGeneratedIdentityKeyConvention
配置默认情况下将标识所有整数的主键。
• TypeNameForeignKeyDiscoveryConvention
使用外键关系,使用 <PrincipalTypeName> <PrimaryKeyProperty> 模式作为属性的外观。

*/}

(0)

相关推荐

  • C#浅拷贝和深拷贝实例解析

    在有些时候,我们需要从数据库读取数据填充对象或从硬盘读取文件填充对象,但是这样做相对耗时.这时候我们就想到了对象的拷贝.本文即以实例形式解析了C#浅拷贝和深拷贝的用法.具体如下: 一.浅拷贝 1.什么是"浅拷贝": 当针对一个对象前拷贝的时候,对于对象的值类型成员,会复制其本身,对于对象的引用类型成员,仅仅复制对象引用,这个引用指向托管堆上的对象实例. 2.有一个对象,包含引用类型的类成员和值类型的struct成员 Cinema包含引用类型成员Room和值类型成员Film. publi

  • C#中struct和class的区别详解

    本文详细分析了C#中struct和class的区别,对于C#初学者来说是有必要加以了解并掌握的. 简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上.class是引用类型,创建一个class类型实例被分配在托管堆上.但struct和class的区别远不止这么简单. 概括来讲,struct和class的不同体现在: ● 类是引用类型,struct是值类型 ● 在托管堆上创建类的实例,在栈上创建struct实例 ● 类实例的赋值,赋的是引用地址,struct实例的赋值,赋的是

  • C#中私有构造函数的特点和用途实例解析

    本文以实例形式分析私有构造函数的特点,以及在何种情况下使用私有构造函数.相信对于大家更好的理解C#中的私有构造函数有一定的促进作用.具体如下: 一.带私有构造函数的类不能被继承 在Animal类中声明一个私有构造函数,让Dog类来继承Animal类. public class Animal { private Animal() { Console.WriteLine("i am animal"); } } public class Dog : Animal { } 运行程序,生成解决方

  • C#判等对象是否相等的方法汇总

    本文以实例形式展示了C#判等对象是否相等的常用方法,非常实用,可供大家参考借鉴之用.具体分析如下: 一.判断相等的3个方法 1.实例方法 public virtual bool Equals(object obj) { return RuntimeHelpers.Equals(this, obj); } 2.比较值类型静态方法 public static bool Equals(object objA, object objB) { return ((objA == objB) || (((ob

  • 基于C#实现的三层架构实例

    本文所述为基于C#实现的三层架构.对于三层的概念查相信大家并不陌生,这里举一个关于三层的简单实例,真正看一下它是如何具体实现的. 我们先来一起看看实体类-Model 实质:实体类就是在完成数据库与实体类对应的功能,一个类是一张表,一个属性是一个字段! using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace model { public class User {

  • C#中委托和事件在观察者模式中的应用实例

    通常来说当一个被监视对象的方法执行会触发观察者Observer的方法的时候,我们就可以在被监视对象中声明委托和事件.本文就以实例形式展示了C#中实现委托和事件在观察者模式中的应用.具体如下: 示例如下: 有一个宠物追踪器挂宠物身上,只要宠物离开主人100米之外,主人手上的显示器显示警告信息并声音报警. class Program { static void Main(string[] args) { PetTracker tracker = new PetTracker(); tracker.I

  • C#入门之checked和unchecked的区别实例解析

    本文以实例形式对比测试了C#中checked和unchecked的区别,对于C#初学者来说有很好的借鉴参考价值.具体分析如下: int类型的最大值是2147483647,2个最大值相加就会超出int的最大值,即出现溢出. class Program { static void Main(string[] args) { int y = 2147483647; int x = 2147483647; int z = x + y; Console.WriteLine(z.ToString()); C

  • 基于C#后台调用跨域MVC服务及带Cookie验证的实现

    背景随着富客户端框架的盛行,以及众多优秀的前端js框架,很多情况我们会遇到跨域的问题,而js的ajax请求是不允许直接跨域访问的,当然你会说可以用JSONP等,但是由于代码洁癖,不想在前端和后台添加callback,而且很多情况你是无法控制的,需要牵连考虑太多的情况. 所以我直接绕过了,每个前端应用,自带一个通用后端服务代理,该服务解决跨域问题,自动代理帮前台获取跨域的数据. 如何算跨域虽然是个老问题,但是还是要提醒注意下两点:同IP,不同端口,数据访问是跨域的,但是Cookie访问是可以的(这

  • C#泛型实例详解

    本文以实例形式讲述了C#泛型的用法,有助于读者深入理解C#泛型的原理,具体分析如下: 首先需要明白什么时候使用泛型: 当针对不同的数据类型,采用相似的逻辑算法,为了避免重复,可以考虑使用泛型. 一.针对类的泛型 针对不同类型的数组,写一个针对数组的"冒泡排序". 1.思路 ● 针对类的泛型,泛型打在类旁. ● 由于在"冒泡排序"中需要对元素进行比较,所以泛型要约束成实现IComparable接口. class Program { static void Main(s

  • C#不可变类型深入解析

    学过C#的人都知道string类型,但是string作为一种特殊的引用类型还有一个重要的特征就是恒定性,或者叫不可变性,即Immutable.作为不可变类型,最主要的特性表现是:一旦创建,只要修改,就会在托管堆上创建一个新的对象实例,而且和上一个对象实例是相邻的,在托管堆上分配到一块连续的内存空间. 那么为什么需要不可变类型呢? 在多线程情况下,一个线程,由于种种原因(比如异常)只修改了一个变量所代表类型的部分成员的值,这时候,另一个进程进来,也访问这个变量,第二个进程访问到的变量成员,一部分成

随机推荐