c# - 强类型 T4MVC Action /ActionLink

标签 c# asp.net-mvc t4mvc

我一直在使用 T4MVC (仅供引用:v2.6.62)已经有一段时间了,我一直在慢慢地将我们的代码转移到这种工作方式(减少对 magic strings 的依赖)。

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

这是一个例子:

路线分割:

/MyController/MyAction/{Number}/{SomeText}

类:

namespace MyNamespace
{
  public class MyClass
  {
    public int Number { get; set; }
    public string SomeText { get; set; }
  }
}

Controller :

public class MyController
{
  public virtual ActionResult MyAction(MyClass myClass)
  {
    return View();
  }
}

查看:

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

最终结果是这样的:

/MyController/MyAction?myClass=MyNamespace.MyClass

不是

/MyController/MyAction/1/ABC

还有人遇到这个问题吗?像这样的 T4MVC 网址是否可用?

问题也在 ASP.NET Forum 提出.

最佳答案

更新 (10/11/2012):最近添加的对 Model Unbinders 的支持(请参阅 doc 中的第 3.1 节)有望涵盖很多此类情况。

原答案:

复制我在 forum thread 的回复:

嗯,我认为这还没有出现。也许在大多数情况下,人们有接受对象的 Action 方法,对象的值来自发布的表单数据,而不是通过 URL 传递?在这种情况下,问题不会出现。

我认为理论上可以更改 T4MVC 以支持此功能。它只需要将对象的所有顶级属性提升为路由值,而不是尝试使用对象本身(显然,当前行为是虚假的,是盲目调用 ToString() 的结果)。

是否有其他人遇到过这个问题并认为值得解决?

关于c# - 强类型 T4MVC Action /ActionLink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2381455/

相关文章:

c# - 获取容器中 Azure blob 文件的名称列表?

c# - 从 CF 的工具箱中隐藏 UserControl

c# - Linq 的 Skip and Take 是否针对数组进行了优化? [4.0版]

asp.net-mvc - 如何将 RouteValueDictionary 添加到 T4MVC ActionLink

c# - DataGridView 试图从字符串转换为对象

c# - 我正在使用 log4net 进行日志记录,但它没有写入日志

asp.net-mvc - Nerddiner 演练适合 ASP.NET MVC 2 吗?

jquery - 从 chrome 中的日期类型输入中删除占位符

c# - T4MVC 未将参数传递给基本 Controller ,因此生成的代码无法构建

.net - 您可以使用 EnvDTE 作为预构建事件执行 RunCustomTool 吗?