标签: t4mvc

在实际项目中使用T4MVC

T4MVC很酷,但我在项目中集成它有几个问题,任何帮助都非常适合:

  1. 我对所有操作都有这样的警告(我SnippetsBaseController用作所有控制器类的基类:

    警告26'Snippets.Controllers.ErrorController.Actions'隐藏继承的成员'Snippets.Controllers.Base.SnippetsBaseController.Actions'.如果要隐藏,请使用new关键字.C:\ projects_crisp-source_crisp\crisp-snippets\Snippets\T4MVC.cs 481 32个片段

  2. 是否可以使用强类型的自定义路由名称,例如,我的路由定义如下:

        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)
  1. 有强烈类型的静态文件链接真的很酷,但我<base />在我的页面中使用,所以我不需要任何URL处理,我可以重新定义 T4MVCHelpers.ProcessVirtualPath而不调整T4MVC.tt自己吗?

  2. T4MVC始终使用大写的控制器和动作名称生成链接,例如:/ Snippets/Add而不是/ snippets/add.是否可以生成小写?

asp.net-mvc t4mvc

9
推荐指数
1
解决办法
2564
查看次数

无法让T4MVC与VS2010和ASP.NET MVC 2一起使用

我正在尝试将T4MVC模板添加到我的项目中,但我遇到了一些问题.我去了Codeplex上,并下载最新版本的T4MVC的,并根据指示,我刚才复制的两个文件T4MVC.tt,并T4MVC.Settings.t4到我的web应用程序的根目录.

我立刻得到了以下错误:

T4MVC.cs(生成的文件):

命名空间不能直接包含字段或方法等成员

T4MVC.tt(代码生成模板):

编译转换:找不到类型或命名空间名称'ITextTemplatingEngineHost'(您是否缺少using指令或程序集引用?)

当我打开时T4MVC.cs,它只包含一行:

ErrorGeneratingCode
Run Code Online (Sandbox Code Playgroud)

我发现这篇文章建议再次构建,但该解决方案并不能解决我的问题 - 事实上,它并没有改变一件事.我该怎么办?

asp.net-mvc t4 visual-studio-2010 t4mvc

8
推荐指数
1
解决办法
5862
查看次数

什么时候T4MVC会支持带有显式HtmlHelper的Razor来渲染部分?

我已经使用T4MVC已经有一段时间了,并且喜欢"显式Ht​​mlHelpers用于渲染部分"功能,默认情况下它已关闭.我使用的是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#"吗?

在一篇文章中提出两个单独的问题的道歉.

c# asp.net-mvc t4mvc razor asp.net-mvc-3

8
推荐指数
1
解决办法
1263
查看次数

T4MVC,它已经过时了吗?还好?如果不是还有什么用?

伙计们,

到今天为止我应该在我的项目中引入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

8
推荐指数
1
解决办法
1428
查看次数

ASP.Net T4MVC文件未自行更新

我在ASP.Net MVC(.Net 4.0)中使用T4MVC模板进行操作.

到目前为止,每当我将新文件添加到项目中时(例如控制器,视图等),此文件都会自动更新条目.

但由于某种原因,它已停止更新自己.我刚刚将新文件夹添加到项目中,包含3个aspx文件以及相关的控制器和模型.但是T4MVC仍然没有显示这些东西,编译器会为丢失的东西提供错误.

任何人都可以帮我弄清楚原因吗?

谢谢!

asp.net-mvc t4mvc

7
推荐指数
2
解决办法
3053
查看次数

如何在不返回301的情况下重定向MVC操作?(使用MVC 4 beta)

我正在开发一个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)

c# asp.net-mvc t4mvc asp.net-mvc-4

7
推荐指数
1
解决办法
3297
查看次数

使T4MVC与ASP.NET 5一起使用

根据最新的评论这个线程,.TT模板现在毕竟可以在ASP.NET 5开始支持Visual Studio的更新1.

哪个恕我直言会很好,因为在使用T4MVC多年后,我当然不想回到使用魔术字符串作为路由/视图名称(容易出错且不重构友好).

但是,我无法使用ASP.NET 5 RC和Visual Studio Professional 2015 Update 1.

这是我尝试过的:

  1. T4MVC NuGet(3.16.5)添加到空白的ASP.NET 5解决方案:nope,CoreCLR抱怨并且没有.tt文件添加到项目中:

错误NU1002项目WebApplication1中的依赖关系T4MVCExtensions 3.16.5不支持框架DNXCore,Version = v5.0.

  1. 在的NuGet添加到经典的ASP.NET 4.6的解决方案和手动复制了T4MVC.tt,T4MVC.tt.hooks.t4T4MVC.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)

asp.net t4mvc coreclr asp.net-core r4mvc

7
推荐指数
1
解决办法
939
查看次数

T4MVC无法使用ErrorGeneratingOutput生成类

我的MVC项目使用T4MVC进行脚手架工作多年.我对我的一个控制器方法的参数输入进行了更改,出于某种原因,当我运行"运行自定义工具"来获取更改时,它改为编写了带有文本"ErrorGeneratingOutput"的T4MVC.cs文件.

我尝试退出更改没有任何效果.我还清理并尝试多次重建项目,但现在T4MVC.tt下没有任何类,并且在尝试重新生成所有内容时仍然以相同的方式失败.

当我尝试调试模板("Debug T4 Template")时,它会用"ErrorDebuggingTemplate"写入T4MVC.cs文件.

我也尝试将T4MVC更新为nuget(3.17.4)上的最新版本,但这根本没有改变行为.

在修复之前,我无法推送任何更改,因为项目现在报告了数千个错误(大多数缺少程序集引用),所以非常感谢任何帮助解决这个问题.谢谢.

c# asp.net-mvc t4mvc

7
推荐指数
1
解决办法
495
查看次数

ASP.NET MVC3如何直接从控制器引用视图

在我的控制器中,我想指定一个不同于默认值的视图.像这样 :

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)

c# asp.net-mvc t4mvc asp.net-mvc-3

6
推荐指数
1
解决办法
1856
查看次数

MVC扩展控制器以具有ajax感知的重定向功能

嗨,我正在学习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)

但是,它并不完整.挑战是: …

asp.net-mvc t4mvc

6
推荐指数
1
解决办法
1758
查看次数