我在MVC .NET应用程序中遵循了国际化(支持多种语言)的教程。我完全可以使用Index.cshtml中的以下代码:
@using(Html.BeginForm("SetCulture", "Home"))
{
<fieldset>
<legend>@Resources.ChooseYourLanguage</legend>
<div class="control-group">
<div class="controls">
<label for="nl">
<input name="culture" id="nl" value="nl" type="radio" @selected("nl", culture) /> Nederlands
</label>
</div>
</div>
<div class="control-group">
<div class="controls">
<label for="fr">
<input name="culture" id="fr" value="fr" type="radio" @selected("fr", culture) /> Français
</label>
</div>
</div>
<div class="control-group">
<div class="controls">
<label for="en">
<input name="culture" id="en" value="en" type="radio" @selected("en", culture) /> English
</label>
</div>
</div>
</fieldset>
}
当然,此代码在.cshtml文件中使用了一些其他脚本。如果需要,我可以提供这些附加部件。
我想使用选择菜单而不是单独的单选按钮。我尝试了跟随,但它似乎没有做任何事情或对代码做出反应以引发语言变化:
@using(Html.BeginForm("SetCulture", "Home"))
{
<fieldset>
<legend>@Resources.ChooseYourLanguage</legend>
<select class="control-group">
<option class="controls" id="nl" value="nl" @selected("nl", culture)>Nederlands</option>
<option class="controls" id="fr" value="fr" @selected("fr", culture)>Français</option>
<option class="controls" id="en" value="en" @selected("en", culture)>English</option>
</select>
</fieldset>
}
我不知道如何让它发挥作用。有人知道如何解决这个问题?
修改
我刚刚意识到我需要提供额外的代码,以便完全理解。所以在Index.cshtml的顶部有:
@{
ViewBag.Title = "Politici Online: Hét platform om de burger dichter bij de manadataris te brengen!";
var culture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLowerInvariant();
}
@helper selected(string c, string culture)
{
if (c == culture)
{
@:checked="checked"
}
}
在底部有脚本部分:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
(function ($) {
$("input[type = 'radio']").click(function ()
{
$(this).parents("form").submit(); // post form
});
})(jQuery);
</script>
}
如您所见,该脚本适用于单选按钮的使用...如何更改它以使其具有相同的功能但使用选择列表?
答案 0 :(得分:2)
如您所见,该脚本适用于单选按钮的使用......如何 我会改变它,所以它具有相同的功能,但使用选择 列出?
为您的select
元素提供唯一ID和name
,以便您可以检索所选值服务器端:
<select class="control-group" id="language" name="culture">
<option class="controls" id="nl" value="nl" @selected("nl", culture)>Nederlands</option>
<option class="controls" id="fr" value="fr" @selected("fr", culture)>Français</option>
<option class="controls" id="en" value="en" @selected("en", culture)>English</option>
</select>
然后订阅.change
事件并在用户选择其他选项时提交父表单:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
(function ($) {
$('#language').change(function () {
$(this).closest('form').submit(); // post form
});
})(jQuery);
</script>
}