2015-09-27 2 views
1

У меня есть приложение, использующее Радиоприемники, например.ASP.NET MVC Многоязыковая функция не работает должным образом

@using (Html.BeginForm("SetCulture", "Home")) 
{ 
<input type="radio" name="culture" id="en-us" value="en-us" class="culture" /> English 
<input type="radio" name="culture" id="tr" value="tr" class="culture" /> Türk 
} 

но когда я использую ввод типа изображения он не посылает хотел VALUE код

@using (Html.BeginForm("SetCulture", "Home")) 
{ 
<input type="image" src="~/Content/Images/en.png" name="culture" id="en-us" value="en-us" class="culture" /> 
<input type="image" src="~/Content/Images/tr.png" name="culture" id="tr" value="tr" class="culture" /> 
} 

JQuery:

$(".culture").click(function() { 
    $(this).parents("form").submit(); // post form 
}); 

HomeController Код:

public ActionResult SetCulture(string culture){ 
    // action code here 
} 

Я не вижу причин, по которым изображения не будут работать, но по какой-то причине это происходит. Есть идеи?

Спасибо большое

ответ

1

В первом блоке кода (с помощью <input type="radio" .. />), вы формируете только вывесим назад одно значение для culture (значение выбранной радио-кнопки).

Во втором блоке кода (с использованием <input type="image" .. />) ваша форма будет отправлять обратно значения обоих входов, поэтому ваша форма данных culture=en-US&culture=tr

DefaultModelBinder будет связывать первое значение и игнорировать второе значение поэтому значение culture в методе POST всегда будет «en-US», независимо от того, какое изображение вы нажимаете.

Одним из вариантов было бы отключить другой вход (инвалидов входы не отправляю обратно значение, например

$(".culture").click(function() { 
    $(this).siblings().prop('disabled', true); // disable the other input 
    $(this).parents("form").submit(); // post form 
}); 

Еще один вариант для обработки этого является использование <img> тегов в сочетании со скрытым входом для значение культуры

<input type="hidden" name="culture" id="culture"/> 
<img src="~/Content/Images/en.png" data-culture="en-US" class="culture" /> 
<img src="~/Content/Images/tr.png" data-culture="tr" class="culture" /> 

$('.culture').click(function() { 
    $('#culture').val($(this).data('culture')); // update the hidden input 
    $('form').submit(); 
}) 
+0

Хотя это делает идеальный смысл исправить не получилось –

+0

Тогда это код в ваш вопрос точный код в вашей реальной точки зрения (то, что я показал, делает работу)? –

+0

Да, это точный код в vie w Thx –

Смежные вопросы