我想为我的网页本地化选项创建一个下拉列表。但是,如果我尝试使用<ul>
标签执行此操作,Html.ActionLink帮助程序会创建与下面的语言代码的真实链接
@{
var routeValues = this.ViewContext.RouteData.Values;
var controller = routeValues["controller"] as string;
var action = routeValues["action"] as string;
}
<ul>
<li>
@Html.ActionLink("TR", @action, @controller, new { culture = "tr" }, new { rel = "alternate", hreflang = "tr" })
</li>
<li>
@Html.ActionLink("EN", @action, @controller, new { culture = "en" }, new { rel = "alternate", hreflang = "en" })
</li>
</ul>
但如果我想在Bootstrap选择控件中执行此操作,它只会显示文本而不会显示在我的网址中。
<select class="bs-select form-control" data-width="auto" id="js-data-example-ajax" name="js-data-example-ajax">
<option>@Html.ActionLink("TR", @action, @controller, new {culture = "tr"}, new {rel = "alternate", hreflang = "tr"})</option>
<option>@Html.ActionLink("EN", @action, @controller, new { culture = "en" }, new { rel = "alternate", hreflang = "en" })</option>
</select>
答案 0 :(得分:0)
我在我的项目中做了同样的事情,请参考下面的代码:
我使用JavaScript完成了这项工作。
我的.cshtml代码:
@Html.DropDownList(
"url",
new SelectList(new[]
{
new SelectListItem { Text = "About", Value = Url.Action("About", "Home") },
new SelectListItem { Text = "MyPage", Value = Url.Action("Index", "Home") },
new SelectListItem { Text = "APage", Value = Url.Action("AnyPage", "Home") },
}, "Value", "Text"),
"-- Pick an URL ---",
new { id = "urlddl" }
)
我的JQuery代码:
$(function() {
$('#urlddl').change(function() {
var url = $(this).val();
if (url != null && url != '') {
window.location.href = url;
}
});
});
使用jQuery,您可以订阅此下拉列表的更改事件并导航到相应的URL。
希望它能解决你的问题。
由于
答案 1 :(得分:0)
你还有其他选择
<option data-url="@Url.Action(@action, @controller)">
TR
</option>
你在jquery中的下拉列表更改事件看起来像
$('#js-data-example-ajax').on('change', function() {
var yourUrl = $('#js-data-example-ajax').find(":selected").data('url');
document.location = yourUrl ;
});