在MVC中动态生成OAuth的图像

时间:2018-01-30 14:06:22

标签: c# asp.net-core asp.net-core-mvc

我想创建

我OAuth的图片 让他们可点击 这是我的代码,

我使用pro作为变量来连接OAuth提供程序的图像

谢谢

EHI

@foreach (var provider in loginProviders)
    {
        var pro = "~/images/icons/" + @provider.Name;
        pro = pro + ".gif";
                    <button type="submit" class="btn btn-default" name="provider" value="@provider.Name" title="Log in using your @provider.DisplayName account">@provider.Name</button>
                    <img img src=@pro />

我得到的回报是https://localhost:44335/Accounts/~/images/icons/Facebook.gif

我期望的是https://localhost:44335/images/icons/Facebook.gif

1 个答案:

答案 0 :(得分:1)

~字符实际上不是受支持的URL组件。按照惯例,ASP.NET将其视为引用文档根目录的路径组件,并以某种方式在处理HTML时动态替换它。在这里,这将是Razor解决这个问题的工作,但这似乎并不是出于某种原因而发生的。我无法确定为什么使用您提供的代码,但作为解决方法,您可以尝试使用Url.Content包装它:

var pro = Url.Content("~/images/icons/" + @provider.Name);

这基本上明确强制它在变量中设置之前被解析。