标签: t4mvc

T4MVC Base控制器没有默认构造函数

我的控制器继承自另一个没有默认构造函数的控制器.T4MVC生成以下构造函数,假定基本控制器具有默认构造函数:

protected MyControllerController(Dummy d) { }
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?有趣的是,根据这个页面,当基本控制器没有默认的ctor时,版本2.4.00"修复了问题".我也发现了这个问题,但我的基本控制器不是通用的.

asp.net-mvc t4mvc

5
推荐指数
1
解决办法
1364
查看次数

AssemblyBinding BindingRedirect不适用于带有T4MVCExtensions的MVC4应用程序

我们有一个使用T4MVC的大型.NET Web应用程序MVC3.我们最近将它升级到MVC4,除了T4MVCExtensions(来自NuGet的3.6.5版)仍然依赖于System.Web.Mvc版本3之外一切都很好.你应该在web.config中设置的运行时依赖项应该是什么重定向程序集绑定,但它们似乎不是.发生以下异常:

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Description: An unhandled exception occurred during the execution of the current web     request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
Run Code Online (Sandbox Code Playgroud)

我们的web.config文件中有以下内容,应该映射它,但它似乎不是 -

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly> …
Run Code Online (Sandbox Code Playgroud)

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

5
推荐指数
1
解决办法
4704
查看次数

使用T4MVC时命名空间错误

刚刚听说过T4MVC但我无法在我的示例项目(ASP.NET MVC 2,Visual Studio 2008)中使用它.

在尝试构建项目时,我得到以下错误:

错误1命名空间'Northwind.Web.MVC'中不存在类型或命名空间名称'Account'(您是否缺少程序集引用?)C:\ Users\Bruno\Documents\My Dropbox\Projetos.NET\Northwind\Northwind.Web.MVC\AccountController.generated.cs 38 61 Northwind.Web.MVC

这是发生错误的地方:

[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public AccountController Actions { get { return MVC.Account; } }
Run Code Online (Sandbox Code Playgroud)

我真的很讨厌魔术弦乐,所以请帮助我让它发挥作用!

visual-studio-2008 t4mvc asp.net-mvc-2

4
推荐指数
1
解决办法
817
查看次数

使用T4MVC,如何在HTML表单上设置action属性

我正在采用我的第一个摇摇欲坠的步骤,使用jQuery提交Html表单.一切运作良好,但想使用T4MVC生成动作链接.

这适用于Html.BeginForm(和Ajax.BeginForm),因为它们将ActionResult作为生成参数的动作.即:

有办法吗?

<form method="POST" action="@MVC.???">
Run Code Online (Sandbox Code Playgroud)

我想我能做到:

@using (Html.BeginForm(MVC.MyArea.MyController.MyAction(),...,new {@id="myForm"}))
        {
            // Inputs
        }
Run Code Online (Sandbox Code Playgroud)

但真的很奇怪T4MVC是否可以解决这个问题.怀疑不是,但我是新手,所以也许我错过了什么?

(是的,我知道Ajax.BeginForm,但我正在使用当前项目来了解有关MVC和jQuery的更多信息).

asp.net-mvc jquery t4mvc asp.net-mvc-3

4
推荐指数
1
解决办法
1123
查看次数

使用T4MVC和构建脚本

有没有人让T4MVC作为构建脚本的一部分运行?最好是NAnt构建脚本.

我不想检查生成的文件,只是让构建服务器创建它们作为构建的一部分,但T4MVC只能在Visual Studio中运行.

我试过了:

有没有人成功找到工作的解决方案?

nant model-view-controller t4mvc

4
推荐指数
1
解决办法
922
查看次数

T4MVC与Url.Action()不兼容属性

这是我的原始代码:

@Url.Action("LoginYoutube", "Account", new { returnUrl = Request.QueryString["ReturnUrl"] }, "http")
Run Code Online (Sandbox Code Playgroud)

哪个会生成:http:// localhost:2543/Account/LoginYoutube

使用T4MVC我做:

Url.Action(MVC.Account.LoginYoutube().AddRouteValue("returnUrl", Request.QueryString["ReturnUrl"]))
Run Code Online (Sandbox Code Playgroud)

并生成:/ Account/LoginYoutube

我需要带有"http"的最后一个参数才能获得http:// localhost:2543.问题在于T4MVC我只能为Url.Action()调用放1个参数.

我怎样才能让它发挥作用?

c# asp.net-mvc t4mvc

4
推荐指数
1
解决办法
2112
查看次数

如何将哈希片段添加到T4MVC路由字典ActionResult?

我有一个返回ActionResult的扩展方法(为了演示目的而简化):

public static ActionResult GetTestActionResult(this HtmlHelper htmlHelper, int productId)
{
    return MVC.Products.Details(productId);
}
Run Code Online (Sandbox Code Playgroud)

我在Html.ActionLink中使用它:

@Html.ActionLink("Product Details", Html.GetTestActionResult(Model.ProductId), new { @class = "button blue" });
Run Code Online (Sandbox Code Playgroud)

我正在为标签使用自定义jQuery插件,它使用这些散列片段进行导航.我想通过将哈希片段标记到URL的末尾来添加我想要打开的选项卡.

Html.ActionLink确实有一个Fragment 的重载,即:

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    string controllerName,
    string protocol,
    string hostName,
    string fragment,
    Object routeValues,
    Object htmlAttributes
)
Run Code Online (Sandbox Code Playgroud)

然而,这充满了讨厌的魔术字符串,T4MVC旨在删除.无论如何在我的静态扩展方法(GetTestActionResult)中将片段添加到路由字典中?

就像是:

return MVC.Products.Details(productId).AddRouteValue(String.Empty, "#tab-similar-products");
Run Code Online (Sandbox Code Playgroud)

我知道SO上有两个类似的问题和答案,但它们并不能完全满足我的要求.我需要将片段包装到ActionResult中,然后再将其传递回视图:

  1. 在ASP.NET MVC URL路由中包含哈希值
  2. 使用url片段创建T4MVC ActionLink

更新:

使用下面的David Ebbo修复程序,我进行了以下更改.有点hacky,但它的工作原理:

首先,我改变了我的内部函数,它返回一个ActionResult,这样它也会将片段作为路由值添加(不理想但有效):

return MVC.Products.Details(productId).AddRouteValue("tab", "#tab-similar-products");
Run Code Online (Sandbox Code Playgroud)

然后在视图中,它将该片段值复制到路径字典中,然后删除该路由值以获得完整性.

// get my ActionResult with the tab fragment …
Run Code Online (Sandbox Code Playgroud)

t4mvc asp.net-mvc-3

4
推荐指数
1
解决办法
2234
查看次数

没有T4MVC生成的常量?

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

但是,在生成的代码中添加常量将允许在属性中使用T4MVC生成的东西.

我想这样的事情:

插入@line 400:

        public const String ControllerNameCONST = @"<#=controller.ClassName #>";
Run Code Online (Sandbox Code Playgroud)

插入@line 445:

        [<#= GeneratedCode #>, DebuggerNonUserCode]
        public static class ActionNamesCONST {
<#foreach (var method in controller.ActionMethodsWithUniqueNames) { #>
<#  if (UseLowercaseRoutes) { #>
            public const string <#=method.ActionName #> =     (<#=method.ActionNameValueExpression #>).ToLowerInvariant();
<#  } else { #>
            public const string <#=method.ActionName #> =     <#=method.ActionNameValueExpression #>;
<#  }
} #>
        }
Run Code Online (Sandbox Code Playgroud)

所以有人可以像这样使用它:

[SomeAttribute(HomeController.ControllerNameCONST)]
//instead of 
[SomeAttribute("Home")]
//or
[SomeAttribute(HomeController.ActionNamesCONST.SomeAction)]
//instead of 
[SomeAttribute("SomeAction")]
Run Code Online (Sandbox Code Playgroud)

编辑:将其用作模型上的自动完成属性,因此可以在模型上指定"目标"控制器和操作.虽然可以重写autocomplete属性以将ActionResult作为参数而不是控制器+动作名称...

asp.net-mvc t4mvc

4
推荐指数
1
解决办法
652
查看次数

T4MVC支持区域中的静态文件?

我开始大量使用T4MVC"链接"功能(例如,@ Links.Content.Site_css).有没有人知道是否有办法为存储在区域内的文件夹中的文件生成方法?我尝试对设置文件进行以下修改,但没有运气.

// Folders containing static files for which links are generated (e.g. Links.Scripts.Map_js)
readonly string[] StaticFilesFolders = new string[] {
"Scripts",
"Content",
"Areas/Admin/Content"
};
Run Code Online (Sandbox Code Playgroud)

首先十分感谢.

DS

t4mvc

4
推荐指数
1
解决办法
582
查看次数

T4MVC for Web.config <appSettings>

关于好事T4MVC是,它可以让你摆脱文字/魔法字符串.

T4MVC是ASP.NET MVC应用程序的T4模板,它创建强类型帮助程序,在引用控制器,操作和视图时不使用文字字符串.

我只是想知道在Web.config文件中的应用程序设置是否可以有类似的东西:

<appSettings>
    <add key="SecurityGuardEmailFrom" value="info@email.net" />
    <add key="PasswordExpiresInDays" value="1" />
    <add key="NumberOfPasswordsToKeep" value="5" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

所以,而不是这个:

private static readonly int PasswordExpiresInDays =
int.Parse(ConfigurationManager.AppSettings["PasswordExpiresInDays"]);
Run Code Online (Sandbox Code Playgroud)

我们有这样的事情:

MVC.Webconfig.PasswordExpiresInDays
Run Code Online (Sandbox Code Playgroud)

要么

MVC.AppSettings.PasswordExpiresInDays
Run Code Online (Sandbox Code Playgroud)

这将有助于在编译时检查应用程序设置是否仍在那里避免运行时错误.

这甚至可行吗?如果是的话,你知道是否已经在某处实现了类似的东西吗?

asp.net-mvc appsettings compile-time magic-string t4mvc

4
推荐指数
2
解决办法
2855
查看次数