T4MVC:如何使用 say Url.Action?

T4MVC: How to use with say Url.Action?

我们可以编写的 T4MVC 文档提示

   @Url.Action(MVC.Dinners.Delete(Model.DinnerID))

而不是老式的硬编码字符串

   @Url.Action("Delete", "Dinners", ...))

(见附图)

也许我严重遗漏了什么,但第一个版本实际上会调用控制器的动作方法,这显然不是目标+有副作用。我已经使用 resharper 静态地跟踪方法调用,并且还进行了调试:实际上调用了该方法,这(再次)不是目标。

确实 Url.Action 有接受 ActionResult 的重载,这就是 T4MVC 版本不会导致编译错误的原因。如果可以在没有副作用的情况下调用操作方法 url 正确呈现,这也是正确的。

我的目标是在视图中呈现动作 url,换句话说,我真的在寻找 @Url.Action("Delete", "Dinners", ...)) 的替代方案。

这是我发现的:

 @Url.Action(MVC.Dinner.ActionNames.Delete, MVC.Dinner.Name)

我错过了什么? (为什么我们要调用实际的操作方法,只是为了呈现它的 url?)

那是致命的。我在问题中描述的都是真的,但仍然是误报。

我的操作方法的 return 值为 string。请不要问为什么,这是完全合法的,逻辑上该方法是无效的(从javascript调用为POST,响应被忽略)

那个字符串 return 值欺骗了 T4MVC 生成器,所以该方法实际上是由 @Url.Action(MVC.Dinners.Delete(Model.DinnerID))

调用的

将方法的 return 值更改为 ActionResult 后(并且什么都不做),T4MVC 生成的代码被更改并且不再调用操作方法