我正在使用带有 T4MVC 的 .Net 4.5 位运行 Visual Studio 2012 RC。
我在我的 Action 方法中AccountController
,我想为另一个看起来像这样的控制器生成一个完全限定的 URL;
public partial class ConfirmEmailController : Controller
{
// ...
[AllowAnonymous]
[HttpPost]
public virtual ActionResult Confirm(ConfirmEmailModel model)
{
//...
}
// ...
}
所以我想调用一个函数(当在我的 AccountController Action 方法中创建一个我可以通过电子邮件发送的链接时;
private string GetEmailConfirmationUrl(MembershipUser aUser, bool confirm)
{
string code = aUser.ProviderUserKey.ToString();
var model = new ConfirmEmailModel() { Code = code, Confirm = confirm };
Url.Action(MVC.ConfirmEmail.Confirm(model); // very typesafe but doesn't work
}
不过和这个其他成员的经历类似强类型的T4MVC Action/ActionLink我只是简单的拿到模型类的名字"www.Models.ConfirmEmail"
我正在使用最新的 T4MVC 位,但自那篇帖子以来,这里似乎没有任何变化。
我不一定希望能够构造和传递这样的模型,我想要的只是以强类型、类型安全的方式构造一个完整的 URL。
我知道这行得通;
Url.Action(MVC.ConfirmEmail.Confirm().AddRouteValues(new ConfirmEmailModel() { Code = code, Confirm = confirm }));
但这不好,因为它不能验证我传入的模型参数是否对该控制器有效,我可以将它们传递给任何控制器(我已经犯了那个错误)。
有没有其他方法可以实现这一点,或者我必须在我的Confirm()
操作中添加一个参数列表?