Я запускаю Visual Studio 2012 RC с битами .Net 4.5 с T4MVC.
Я использую метод действия для моего AccountController
, и я хочу сгенерировать полный URL-адрес для другого контроллера, который выглядит примерно так;
public partial class ConfirmEmailController : Controller
{
// ...
[AllowAnonymous]
[HttpPost]
public virtual ActionResult Confirm(ConfirmEmailModel model)
{
//...
}
// ...
}
Итак, я хочу вызвать функцию (находясь внутри моего метода действия AccountController, который создает ссылку, которую я могу отправить по электронной почте;
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()
?