Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc T4MVC没有生成常量?_Asp.net Mvc_T4mvc - Fatal编程技术网

Asp.net mvc T4MVC没有生成常量?

Asp.net mvc T4MVC没有生成常量?,asp.net-mvc,t4mvc,Asp.net Mvc,T4mvc,为什么T4MVC生成的代码中没有常量字符串?我猜是编译时复制常量值 但向生成的代码中添加常量将允许在属性中使用T4MVC生成的内容 我会这样想: [SomeAttribute(HomeController.ControllerNameCONST)] //instead of [SomeAttribute("Home")] //or [SomeAttribute(HomeController.ActionNamesCONST.SomeAction)] //instead of [SomeAtt

为什么T4MVC生成的代码中没有常量字符串?我猜是编译时复制常量值

但向生成的代码中添加常量将允许在属性中使用T4MVC生成的内容

我会这样想:

[SomeAttribute(HomeController.ControllerNameCONST)]
//instead of 
[SomeAttribute("Home")]
//or
[SomeAttribute(HomeController.ActionNamesCONST.SomeAction)]
//instead of 
[SomeAttribute("SomeAction")]
在第400行插入:

        public const String ControllerNameCONST = @"<#=controller.ClassName #>";
编辑:将其用作模型上的自动完成属性,以便可以在模型上指定“目标”控制器和操作。虽然可以修改autocomplete属性,将ActionResult作为参数,而不是控制器+操作名称…

更新(2011年12月7日):此问题现已修复(在2.6.65中)。看


T4MVC确实生成许多常量。e、 g

控制器名称:
MVC.Home.name

操作名称:
MVC.Home.ActionNames.About


对于视图名称:
MVC.Home.Views.About

是的,我知道,但这些是只读的“常量”,而不是C#const。所以不能在属性中使用它们,因为会出现编译时错误:“属性参数必须是常量表达式、typeof表达式或属性参数类型的数组创建表达式”啊,我明白了。对,今天不行。困难之处在于它不能作为MVC访问。*与T4MVC生成的其他内容一样。@Davidebo,如果将MVC.Controller.Name作为C#const,对于在服务器端执行历史管理的人员来说,它将非常有用。这样,它们就可以在重定向逻辑的switch语句中使用。
[SomeAttribute(HomeController.ControllerNameCONST)]
//instead of 
[SomeAttribute("Home")]
//or
[SomeAttribute(HomeController.ActionNamesCONST.SomeAction)]
//instead of 
[SomeAttribute("SomeAction")]