标签: t4mvc

不能隐式地将类型void转换为对象..NET MVC PartialViewResult

我有以下控制器操作:

[ChildActionOnly]
public virtual PartialViewResult ListActions(int id)
{
    var actions = meetingActionRepository.GetAllMeetingActions(id);

    return PartialView(actions);
}
Run Code Online (Sandbox Code Playgroud)

以及以下操作链接(使用t4MVC和razor语法)

<p>
   @Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId))
</p>
Run Code Online (Sandbox Code Playgroud)

但是这给了我错误:

不能隐式地将类型void转换为对象

至于我可以告诉控制器动作是好的,那么什么可以给我这个错误?

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

80
推荐指数
4
解决办法
7万
查看次数

T4MVC @ Url.Action(MVC.Controller.Action())在QueryString中呈现"?Area ="参数

我正在使用Partial Action将菜单直接渲染到布局,使用:

@Html.Action(MVC.Menu.Index())
Run Code Online (Sandbox Code Playgroud)

此操作确定要呈现的部分Menu.例如,公共菜单部分.在这些部分中,我也使用T4MVC来渲染链接:

<ul id="navHolder">
<li class="level1">
    <ul class="mainMenu">
        <li><b>@Html.ActionLink("Welcome", MVC.Home.Index())</b>
           ... 
Run Code Online (Sandbox Code Playgroud)

出于某种原因,T4MVC呈现的网址最后包含"?Area =":

 <ul id="navHolder">
    <li class="level1">
        <ul class="mainMenu">
            <li><b><a href="/home/index?Area=">Welcome</a></b>
               ...
Run Code Online (Sandbox Code Playgroud)

我的项目中没有区域,我将"IncludeAreasToken"设置为false.奇怪的是,只有当我使用"@ Html.Action"渲染局部时才会发生这种情况 - 如果我将其拉入"@ Html.Partial",则不会渲染参数并且链接是干净且正确的.(我不想把它渲染为部分,所以请不要提供它作为建议;)

以前有人遇到这个吗?

asp.net-mvc t4mvc

21
推荐指数
2
解决办法
5269
查看次数

带错误的剃刀语法在不应编译时编译

所以我在运行时使用我的asp.net mvc3应用程序进入错误,当我检查代码时,我看到它上面有一个红线,错误列表没有定义这样的函数,它仍然可以正常编译.错误仅在运行时出现?我正在使用T4MVC,我希望它可以帮助我避免这样的问题!?

这是设计还是我在这里做错了什么?

在此输入图像描述

上面的代码不应该编译,因为那里没有这样的方法!

它在运行时失败:

在此输入图像描述

这种事情发生了很多,不仅仅是未定义的方法,甚至是变量等.

asp.net-mvc compiler-errors t4mvc razor asp.net-mvc-3

19
推荐指数
1
解决办法
7156
查看次数

强类型T4MVC Action/ActionLink

我已经使用T4MVC(FYI:v2.6.62)已经有一段时间了,我一直在慢慢地将代码转移到这种工作方式(减少对魔术字符串的依赖).

但我不得不停下来,因为由于某种原因,T4MVC无法将对象转换为URL,并且似乎只能处理原始类型(int/string/etc).

这是一个例子:

路线分解:

/MyController/MyAction/{Number}/{SomeText}
Run Code Online (Sandbox Code Playgroud)

类:

namespace MyNamespace
{
  public class MyClass
  {
    public int Number { get; set; }
    public string SomeText { get; set; }
  }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

public class MyController
{
  public virtual ActionResult MyAction(MyClass myClass)
  {
    return View();
  }
}
Run Code Online (Sandbox Code Playgroud)

视图:

<%= Html.Action(
  T4MVC.MyController.Actions.MyAction(
    new MyClass()
    {
      Number = 1,
      SomeText = "ABC"
    }
 ) %>
Run Code Online (Sandbox Code Playgroud)

最终结果如下:

/MyController/MyAction?myClass=MyNamespace.MyClass
Run Code Online (Sandbox Code Playgroud)

并不是

/MyController/MyAction/1/ABC
Run Code Online (Sandbox Code Playgroud)

还有其他人有这个问题吗?T4MVC这样的网址是否可用?

问题还在ASP.NET论坛上提出.

c# asp.net-mvc t4mvc

17
推荐指数
1
解决办法
2681
查看次数

T4MVC"运行自定义工具"生成EnvDTO 7.0 vs 8.0 csc警告

当我右键单击T4MVC.tt并选择"运行自定义工具"(即通过T4MVC.cs文件重建)时,我收到以下警告.

警告1个编译转型:假设集引用"EnvDTE,版本= 7.0.3300.0,文化=中性公钥= b03f5f7f11d50a3a"匹配"EnvDTE,版本= 8.0.0.0,文化=中性公钥= b03f5f7f11d50a3a",你可能需要提供运行时策略C:\ Development\EHealth-Trunk\src\EHealth.Web\T4MVC.tt 1 1

这真的没什么大不了的,我只是不喜欢在我的代码库中有(不必要的)警告......

asp.net-mvc envdte t4mvc asp.net-mvc-3

11
推荐指数
1
解决办法
1427
查看次数

使用url片段创建T4MVC ActionLink

有没有办法在其中创建一个带有哈希/磅/片段的强类型T4MVC ActionLink?

例如,这是我想要创建的链接:

<a href="/Home/Index#food">Feed me</a>
Run Code Online (Sandbox Code Playgroud)

但是没有可以做到这一点的T4MVC对象的扩展.

<%= Html.ActionLink("Feed me", T4MVC.Home.Index()) %>
Run Code Online (Sandbox Code Playgroud)

所以,我最终要做的是创建一个动作,然后以这种方式嵌入它:

<a href="<%= Url.Action(T4MVC.Home.Index()) %>"#food>Feed me</a>
Run Code Online (Sandbox Code Playgroud)

这不是很理想.任何人有任何想法/建议?

提前致谢

asp.net-mvc t4mvc html.actionlink

10
推荐指数
2
解决办法
5245
查看次数

在控制器操作中使用T4MVC生成URL

我正在使用t4mvc在我的项目中生成链接.我想在控制器动作中生成URL,这可以使用t4mvc完成吗?

t4mvc asp.net-mvc-3

10
推荐指数
1
解决办法
3577
查看次数

你能用EnvDTE做一个RunCustomTool作为预构建事件吗?

我正在使用T4MVC,我不能使用预构建事件来运行TextTransform.exe,因为它依赖于EnvDTE,并且必须以Visual Studio作为主机运行.

如果我已经运行了一次自定义工具,它运行得很好,因为它在执行(AlwaysKeepTemplateDirty = true)时会标记为脏,但是当你打开解决方案时,它不会在构建时运行,所以我想知道你是否可以通过EnvDTE运行t4作为预建活动?

.net macros t4 envdte t4mvc

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

在实际项目中使用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:无法继承没有默认构造函数的控制器类?

我正在使用T4MVC和MVC2.

我有以下构建基块:

  1. 一个简单的实体接口,定义每个POCO实体必须具有long Id属性:

    public interface IEntity
    {
        public long Id;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 一个简单的POCO类,它实现了IEntity接口并具有一些字符串属性:

    public class CD : IEntity
    {
        public long Id { get; set; }
    
        public long Name { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 基础控制器:

    public abstract class EntityController<T> : Controller where T : class, global::IEntity
    {
        public EntityController(IEntityManager<T> manager);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我在my中使用这个基本控制器CDController(其中CDManager实现了IEntityManager接口,这是一个UnitOfWork模式来添加CRUD功能):

    public partial class CDController : EntityController<CD>
    {
        public CDController() : base(new CDManager()) { }
    }
    
    Run Code Online (Sandbox Code Playgroud)

当我运行我的t4模板时,会生成以下代码:

namespace MyApp.Web.Controllers …
Run Code Online (Sandbox Code Playgroud)

constructor controller t4mvc

9
推荐指数
2
解决办法
1717
查看次数