Как я могу использовать T4MVC с внешней формой подтверждения входа в проект MVC5 по умолчанию?

В веб-проекте 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), но было бы неплохо иметь возможность использовать помощника.


person Gary McGill    schedule 30.01.2014    source источник


Ответы (1)


Это описано в этой теме. В общем, попробуйте:

MVC.Account.ExternalLoginConfirmation().Result.AddRouteValue(...)
person David Ebbo    schedule 01.02.2014
comment
Угу. Это так похоже, что он выполнит задачу, но если нет, то отлично - спасибо. - person Gary McGill; 01.02.2014
comment
Не волнуйтесь, этого не будет. Не больше, чем в том, что у вас было выше, вызывается фактическая функция. Каждый звонок, который вы делаете в мире T4MVC, является подделкой :) - person David Ebbo; 02.02.2014