强类型T4MVC Action/ActionLink

Dan*_*son 17 c# asp.net-mvc t4mvc

我已经使用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论坛上提出.

Dav*_*bbo 17

更新(10/11/2012):最近添加的对模型解绑定的支持(参见文档中的第3.1节)应该有望涵盖很多这些情况.

原始答案:

论坛帖子中复制我的回复:

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

我认为理论上T4MVC可以改为支持这一点.它只需要将所有对象的顶级属性提升为路由值,而不是尝试使用对象本身(显然,当前行为是伪造的,并且是盲目地调用ToString()的结果).

有其他人遇到这个并认为值得解决吗?