使用Owin Security的Steam网格 - 在ASPX中实现功能而不是CSHTML

时间:2016-02-18 15:55:44

标签: c# asp.net-mvc razor owin steam-web-api

背景:我使用ASPX文件和webforms(作为我的日常工作)但从未真正使用 Razor (。cshtml)。

我正在尝试使用Owin.Security.Providers创建一个登录 Steam 的网站。

当我执行Install-Package Install-Package Owin.Security.Providers并从https://steamcommunity.com/dev/apikey实施API时,我注意到相应的按钮是在 Razor 中实现的,如下所示。

 using (Html.BeginForm("ExternalLogin", "Account", new { ReturnUrl = Model.ReturnUrl })) {
            @Html.AntiForgeryToken()
            <div id="socialLoginList">
                <p>
                    @foreach (AuthenticationDescription p in loginProviders) {
                        <button type="submit" class="btn btn-default" id="@p.AuthenticationType" name="provider" value="@p.AuthenticationType" title="Log in using your @p.Caption account">@p.AuthenticationType</button>
                    }
                </p>
            </div>

问题:

有没有办法在ASPX页面而不是在CSHTML页面中获得相同的功能?

以下代码是否为按钮提供了登录链接?

using (Html.BeginForm("ExternalLogin", "Account", new { ReturnUrl = Model.ReturnUrl })) {

1 个答案:

答案 0 :(得分:1)

Razor可以通过trivia方式转换为ASPX语法。

如果您在ASP.NET MVC上下文中使用ASPX语法,则可以使用Html帮助程序,就像在Razor中一样:

<% using (Html.BeginForm("ExternalLogin", "Account", new { ReturnUrl = Model.ReturnUrl })) { %>
    <%= Html.AntiForgeryToken %>
    <div id="socialLoginList">
        <p>
        <% foreach( AuthenticationDescription p in loginProviders ) { %>
            <button type="submit" class="btn btn-default" id="<%= p.AuthenticationType %>" name="provider" value="<%= p.AuthenticationType %>" title="Log in using your <%= p.Caption %> account"><%= p.AuthenticationType %></button>
            <% } // foreach %>
        </p>
    </div>
<% } // using %>

(注意:对于应该是HTML编码的输出,请使用<%:而不是<%=。我不知道输出中的哪些字符串应该编码。

如果您在非MVC上下文中使用它,则需要使用文字HTML替换Html帮助程序。 不要使用WebControls (如<asp:Form>),因为您失去了对标记的控制权: