Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带引导的语言切换器_C#_Asp.net Mvc_Twitter Bootstrap_Twitter Bootstrap 3_Language Switching - Fatal编程技术网

C# 带引导的语言切换器

C# 带引导的语言切换器,c#,asp.net-mvc,twitter-bootstrap,twitter-bootstrap-3,language-switching,C#,Asp.net Mvc,Twitter Bootstrap,Twitter Bootstrap 3,Language Switching,我正在尝试在导航栏中构建一个语言切换器 我的代码如下(在\u LoginPartial.cshtml中) 使用(Html.BeginForm(“SetCulture”、“Home”、FormMethod.Post)){ @Html.AntiForgeryToken() } @ActionLink(“Register”、“Register”、“Account”、routeValue:null、htmlAttributes:new{id=“registerLink”}) @Acti

我正在尝试在导航栏中构建一个语言切换器

我的代码如下(在
\u LoginPartial.cshtml
中)

使用(Html.BeginForm(“SetCulture”、“Home”、FormMethod.Post)){
@Html.AntiForgeryToken()
}
  • @ActionLink(“Register”、“Register”、“Account”、routeValue:null、htmlAttributes:new{id=“registerLink”})
  • @ActionLink(“登录”、“登录”、“帐户”、routeValue:null、htmlAttributes:new{id=“loginLink”})
@selectedImgSrc
值为
~/assets/images/i18n/en-US.png

@文化价值
en-us

但是,此代码会产生以下结果

这有两个问题:

  • 导航上不显示图像,仅显示文本(en US)
  • 下拉列表太大,我不喜欢。有没有办法把它缩小
导航上不显示图像,仅显示文本(en US)

我真的不明白为什么图像没有显示在导航上,但我建议您首先检查它是否包含在解决方案中,然后,使用您的首选开发工具检查生成了什么Html,如果正确生成,请检查有关该图像的请求。如果请求成功,那么您的问题在CSS中

更新:
好的,我不知道为什么我以前没有看到它,但是你的图像在路径的开始处使用了瓷砖。虽然您需要为Asp.net指定的路径是绝对路径,但在普通Html路径中,它只是一个普通字符,因此它查找“…”而不是域的根。(有一些浏览器/Web服务器可以识别它,但它不是URL中的标准。请看下面投票最多的答案:和这里:)

此外,最好使用类似于
@url.Content(“~/assets/images/i18n/en-US.png”)
的Razor助手替换硬编码的url。请注意,现在我使用了tilde,因为ASP.Net将转换为正确的绝对路径。
*(我假设您使用razor是因为
@Html.ActionLink


下拉列表太大,我不喜欢。有没有办法把它缩小

类“dropdown menu”(.dropdown menu)有一个规则,该类的属性min width设置为160px(min width:160px;)。
所以,它只是用一个新规则覆盖这个属性,比如:

Html:


谢谢你的回答。对CSS来说,你的建议很有效。关于第1点,图像被包括在内,html是正确的,请求是好的。在下拉列表中,事实上还有另一个相同图像的实例。哼。。。老实说,你的问题很奇怪,但是,请看我更新的答案,并尝试删除瓷砖。。。让我知道结果…那么@Lorenzo,你是想移除瓷砖还是使用剃刀助手?有什么消息吗?抱歉暂停。我参与了另一项优先级更高的任务。无论如何,你的建议,删除瓷砖也工作得很好。这听起来很奇怪,因为下拉列表中的相同代码可以完美地工作。无论如何,非常感谢,现在问题已经解决了,如果有机会会再次投票吗;)有时候我已经经历过这种奇怪的行为。浏览器有时会保留文件名或/和相对路径的引用,然后即使找不到源,也会显示找到的最后一个文件。我在一个项目中遇到了Js和Css文件。更改了位置,浏览器仍然包含它们,甚至收到404响应。不管怎样,我很高兴能帮助你。不客气!
using ( Html.BeginForm( "SetCulture", "Home", FormMethod.Post ) ) {
    @Html.AntiForgeryToken()
    <ul class="nav navbar-nav navbar-right">
        <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
                <img src="@selectedImgSrc" alt="@culture" />
                <span class="caret"></span>
            </a>
            <ul class="dropdown-menu" role="menu">
                <li role="presentation"><a href="#" class="language" rel="it-IT"><img src="~/assets/images/i18n/it-IT.png" alt="Italiano" /></a></li>
                <li role="presentation"><a href="#" class="language" rel="en-US"><img src="~/assets/images/i18n/en-US.png" alt="English" /></a></li>
            </ul>
        </li>
    </ul>
}
<ul class="nav navbar-nav navbar-right">
    <li>@Html.ActionLink( "Register", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" } )</li>
    <li>@Html.ActionLink( "Sign in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" } )</li>
</ul>
<ul class="dropdown-menu UlLanguageMenu" role="menu">
ul.dropdown-menu.UlLanguageMenu{
    min-width: auto;
}