I'm running Visual Studio 2012 RC with the .Net 4.5 bits with T4MVC.
I'm in an Action method for my AccountController
and I want to generate a fully qualified URL for another controller which looks something like this;
public partial class ConfirmEmailController : Controller
{
// ...
[AllowAnonymous]
[HttpPost]
public virtual ActionResult Confirm(ConfirmEmailModel model)
{
//...
}
// ...
}
So I want to call a function (when inside my AccountController Action method that creates a link I can email;
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
}
However, similar to this other members's experience Strongly-typed T4MVC Action/ActionLink I simply get the name of the model class "www.Models.ConfirmEmail"
I'm using the latest T4MVC bits but it doesn't look like there's been any change here since that post.
I don't necessarily want to be able to contruct and pass in models like this, all I want is to construct a full URL in a strongly typed, type-safe fashion.
I know this works;
Url.Action(MVC.ConfirmEmail.Confirm().AddRouteValues(new ConfirmEmailModel() { Code = code, Confirm = confirm }));
But that's no good because it doesn't validate that the model parameters I'm passing in are even valid for that controller, I could pass them to any controller (I've already made that mistake).
Is there any other way of achieving this or must I put a parameter list in my Confirm()
action?