如何在默认的MVC5项目中使用T4MVC和外部登录确认表单?

时间:2014-01-30 10:49:31

标签: asp.net-mvc asp.net-mvc-5 t4mvc

在默认的ASP.NET MVC 5 Web项目中,“Login”视图(“Login.cshtml”)有一个BeginForm调用,如下所示:

@using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))

我正在尝试将所有ActionLinkBeginForm(等)调用转换为使用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.ExternalLoginConfirmationMVC.Account.Name替换魔术字符串,但是能够使用帮助器会很好。

1 个答案:

答案 0 :(得分:1)

this thread中介绍了这一点。基本上,尝试:

MVC.Account.ExternalLoginConfirmation().Result.AddRouteValue(...)