我的应用使用单选按钮工作,例如
@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
}
我认为图片没有理由不起作用,但出于某种原因它会发生。有什么想法吗?
非常感谢
答案 0 :(得分:1)
在第一个代码块(使用<input type="radio" .. />
)中,表单只会回发culture
的一个值(所选单选按钮的值)。
在第二个代码块中(使用<input type="image" .. />
),您的表单会回发两个输入的值,因此您的表单数据为culture=en-US&culture=tr
DefaultModelBinder
将绑定第一个值并忽略第二个值,因此POST方法中culture
的值将始终为&#34; en-US&#34;无论您点击哪个图像。
一个选项是禁用其他输入(禁用的输入不会回发值,例如
$(".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();
})