В веб-проекте ASP.NET MVC 5 по умолчанию представление «Вход» («Login.cshtml») имеет вызов BeginForm
следующим образом:
@using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
Я пытаюсь преобразовать все свои вызовы ActionLink
, BeginForm
(и т. д.) для использования T4MVC, поэтому я изменил его на:
@using (Html.BeginForm(MVC.Account.Login().AddRouteValue("ReturnUrl", (string)ViewBag.ReturnUrl), FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
... который работал нормально.
Однако в «ExternalLoginConfirmation.cshtml» есть еще одна форма, которая начинается так:
@using (Html.BeginForm("ExternalLoginConfirmation", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
Я попытался использовать тот же подход:
@using (Html.BeginForm(MVC.Account.ExternalLoginConfirmation().AddRouteValue(...)
... но объект, возвращаемый MVC.Account.ExternalLoginConfirmation
, не имеет метода AddRouteValue
.
Я думаю, это потому, что ExternalLoginConfirmation
— это метод асинхронного действия, который на самом деле возвращает Task<T>
, а не просто T
.
Есть ли способ заставить это работать с T4MVC, или мне просто нужно оставить это в покое? (Я знаю, что могу просто заменить волшебные строки, используя MVC.Account.ActionNames.ExternalLoginConfirmation
и MVC.Account.Name
), но было бы неплохо иметь возможность использовать помощника.