T4MVC很酷,但我在项目中集成它有几个问题,任何帮助都非常适合:
我对所有操作都有这样的警告(我SnippetsBaseController
用作所有控制器类的基类:
警告26'Snippets.Controllers.ErrorController.Actions'隐藏继承的成员'Snippets.Controllers.Base.SnippetsBaseController.Actions'.如果要隐藏,请使用new关键字.C:\ projects_crisp-source_crisp\crisp-snippets\Snippets\T4MVC.cs 481 32个片段
是否可以使用强类型的自定义路由名称,例如,我的路由定义如下:
routes.MapRoute(
"Feed",
"feed/",
MVC.Snippets.Rss()
);
Run Code Online (Sandbox Code Playgroud)是否可以替换:
<%= Url.RouteUrl("Feed") %>
Run Code Online (Sandbox Code Playgroud)
有类似的东西:
<%= Url.RouteUrl(MVC.Routes.Feed) %>
Run Code Online (Sandbox Code Playgroud)
有强烈类型的静态文件链接真的很酷,但我<base />
在我的页面中使用,所以我不需要任何URL处理,我可以重新定义
T4MVCHelpers.ProcessVirtualPath
而不调整T4MVC.tt
自己吗?
T4MVC始终使用大写的控制器和动作名称生成链接,例如:/ Snippets/Add而不是/ snippets/add.是否可以生成小写?
我正在尝试将T4MVC模板添加到我的项目中,但我遇到了一些问题.我去了Codeplex上,并下载最新版本的T4MVC的,并根据指示,我刚才复制的两个文件T4MVC.tt
,并T4MVC.Settings.t4
到我的web应用程序的根目录.
我立刻得到了以下错误:
从T4MVC.cs
(生成的文件):
命名空间不能直接包含字段或方法等成员
从T4MVC.tt
(代码生成模板):
编译转换:找不到类型或命名空间名称'ITextTemplatingEngineHost'(您是否缺少using指令或程序集引用?)
当我打开时T4MVC.cs
,它只包含一行:
ErrorGeneratingCode
Run Code Online (Sandbox Code Playgroud)
我发现这篇文章建议再次构建,但该解决方案并不能解决我的问题 - 事实上,它并没有改变一件事.我该怎么办?
我已经使用T4MVC已经有一段时间了,并且喜欢"显式HtmlHelpers用于渲染部分"功能,默认情况下它已关闭.我使用的是T4MVC 2.6.40版.
我最近升级到MVC3并注意到没有为Razor partials生成明确的HtmlHelpers,所以我查看了T4MVC文本模板的源代码,并找到了一个名为"GetPartials"的方法,它有一行代码如下:
var parts = GetControllers()
.Select(m => m.ViewsFolder)
.SelectMany(m => m.Views)
.Where(m => m.Value.EndsWith(".ascx"));
Run Code Online (Sandbox Code Playgroud)
所以很明显Razor视图不受支持.
我还想提一下,当运行T4模板(右键单击>运行自定义工具)时,我收到编译器警告:"不再支持C#2.0和C#3.5编译器.模板将始终使用版本编译4编译器而不是指定的'v3.5'."
这涉及第18行,其中模板语言属性具有值"C#v3.5".为什么必须有明确的版本依赖?它不只是"C#"吗?
在一篇文章中提出两个单独的问题的道歉.
伙计们,
到今天为止我应该在我的项目中引入T4MVC还是使用MvcContrib的强类型?
return RedirectToAction(MVC.MyController.MyAction());
Run Code Online (Sandbox Code Playgroud)
要么
return RedirectToAction<MyController>(c => c.MyAction());
Run Code Online (Sandbox Code Playgroud)
努力坚持标准/主流并保持最新.
我知道,这个网站上有问答,我很想知道什么是最新的和最好的,而不是2年前.
提前致谢.
asp.net-mvc asp.net-mvc-futures mvccontrib t4mvc asp.net-mvc-3
我在ASP.Net MVC(.Net 4.0)中使用T4MVC
模板进行操作.
到目前为止,每当我将新文件添加到项目中时(例如控制器,视图等),此文件都会自动更新条目.
但由于某种原因,它已停止更新自己.我刚刚将新文件夹添加到项目中,包含3个aspx
文件以及相关的控制器和模型.但是T4MVC仍然没有显示这些东西,编译器会为丢失的东西提供错误.
任何人都可以帮我弄清楚原因吗?
谢谢!
我正在开发一个ASP.NET MVC解决方案,它有许多不同的菜单.要显示的菜单取决于当前登录用户的角色.
在MVC 3中,我有一些自定义代码来支持这种情况,通过使用单个控制器方法返回正确的菜单.它会通过将请求推迟到适当的控制器和操作来执行此操作,具体取决于当前用户.
此代码似乎在MVC 4中被破坏,我正在寻找帮助来解决它.
首先,我添加了一个TransferResult助手类来执行重定向:
public class TransferResult : RedirectResult
{
#region Transfer to URL
public TransferResult( string url ) : base( url )
{
}
#endregion
#region Transfer using RouteValues
public TransferResult( object routeValues ) : base( GetRouteUrl( routeValues ) )
{
}
private static string GetRouteUrl( object routeValues )
{
var url = new UrlHelper( new RequestContext( new HttpContextWrapper( HttpContext.Current ), new RouteData() ), RouteTable.Routes );
return url.RouteUrl( routeValues );
}
#endregion
#region Transfer using ActionResult …
Run Code Online (Sandbox Code Playgroud) 根据最新的评论这个线程,.TT模板将现在毕竟可以在ASP.NET 5开始支持Visual Studio的更新1.
哪个恕我直言会很好,因为在使用T4MVC多年后,我当然不想回到使用魔术字符串作为路由/视图名称(容易出错且不重构友好).
但是,我无法使用ASP.NET 5 RC和Visual Studio Professional 2015 Update 1.
这是我尝试过的:
错误NU1002项目WebApplication1中的依赖关系T4MVCExtensions 3.16.5不支持框架DNXCore,Version = v5.0.
T4MVC.tt
,T4MVC.tt.hooks.t4
并T4MVC.tt.settings.xml
给ASP.NET 5解决方法:Visual Studio中的.TT文件确实提供了"运行自定义工具" .......但是运行转换会抛出NullReferenceException
:
Severity Code Description Project File Line Suppression State
Error Running transformation: System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.VisualStudio.TextTemplating3FE65EE761BB32C4AE5AEEB1949A6FC143551E0A56C74E6B36511A416E2DE40FB92F7CB1BC6FC7A97FF5B622AE39377BBFB9463480555898ADB8DD6D286C533D.GeneratedTextTransformation.GetProjectItem(ProjectItems items, String subPath) in c:\dev\MyApp\WebApplication3\src\WebApplication3\T4MVC.tt:line 1398
at Microsoft.VisualStudio.TextTemplating3FE65EE761BB32C4AE5AEEB1949A6FC143551E0A56C74E6B36511A416E2DE40FB92F7CB1BC6FC7A97FF5B622AE39377BBFB9463480555898ADB8DD6D286C533D.GeneratedTextTransformation.GetProjectItem(Project project, String name) in c:\dev\MyApp\WebApplication3\src\WebApplication3\T4MVC.tt:line 1378 …
Run Code Online (Sandbox Code Playgroud) 我的MVC项目使用T4MVC进行脚手架工作多年.我对我的一个控制器方法的参数输入进行了更改,出于某种原因,当我运行"运行自定义工具"来获取更改时,它改为编写了带有文本"ErrorGeneratingOutput"的T4MVC.cs文件.
我尝试退出更改没有任何效果.我还清理并尝试多次重建项目,但现在T4MVC.tt下没有任何类,并且在尝试重新生成所有内容时仍然以相同的方式失败.
当我尝试调试模板("Debug T4 Template")时,它会用"ErrorDebuggingTemplate"写入T4MVC.cs文件.
我也尝试将T4MVC更新为nuget(3.17.4)上的最新版本,但这根本没有改变行为.
在修复之前,我无法推送任何更改,因为项目现在报告了数千个错误(大多数缺少程序集引用),所以非常感谢任何帮助解决这个问题.谢谢.
在我的控制器中,我想指定一个不同于默认值的视图.像这样 :
public ActionResult EditSurvey(Int32 id)
{
Survey survey = _entities.Surveys.Single(s => s.Id == id);
return View("Survey",survey);
}
Run Code Online (Sandbox Code Playgroud)
但是我没有将视图指定为字符串("Survey"),而是想直接引用它,所以如果我决定稍后更改我的视图名称,则不必手动更改此字符串.
所以我正在寻找这样的东西:
public ActionResult EditSurvey(Int32 id)
{
Survey survey = _entities.Surveys.Single(s => s.Id == id);
return View(Views.Admin.Survey,survey);
}
Run Code Online (Sandbox Code Playgroud) 嗨,我正在学习Ajax + MVC.我认为控制器自动处理ajax感知的Redirect()会很好.经过一番挖掘,我找到了这个链接的代码.下面的代码对用户完全透明,用户只需调用Redirect(someUrlString),无需担心普通/ ajax调用之间的区别.使它非常整洁和凉爽.
public abstract class BaseController : System.Web.Mvc.Controller {
//turn into ajax aware redirect
protected override RedirectResult Redirect(string url) {
return new AjaxAwareRedirectResult(url);
}
}
Run Code Online (Sandbox Code Playgroud)
和......
public class AjaxAwareRedirectResult : RedirectResult {
public AjaxAwareRedirectResult(string url) : base(url) { }
public override void ExecuteResult(ControllerContext context) {
if (context.RequestContext.HttpContext.Request.IsAjaxRequest()) {
string desturl = UrlHelper.GenerateContentUrl(Url, context.HttpContext);
JavaScriptResult result = new JavaScriptResult() {
Script = "window.location='" + desturl + "';" };
result.ExecuteResult(context);
}
else { base.ExecuteResult(context); }
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它并不完整.挑战是: …
t4mvc ×10
asp.net-mvc ×9
c# ×4
asp.net ×1
asp.net-core ×1
coreclr ×1
mvccontrib ×1
r4mvc ×1
razor ×1
t4 ×1