2012-04-11 112 views
1

这里是我的简单的类时绑定一个复选框的模型:提交表单

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using XXX.Domain; 

namespace XXX.WebUI.Models 
{ 
    public class AccountRegisterModel 
    { 
     ..snip.. 

     [Required(ErrorMessage = "You must agree to our terms of use.")] 
     public bool AcceptedTerms { get; set; } 

     ..snip.. 
    } 
} 

而我的观点:

<div class="terms"> 
    <input type="checkbox" name="AcceptedTerms" value="AcceptedTerms" /> 
    <img class="sim" src="@Url.Content("~/Public/images/unchecked.gif")" alt="accept the terms" /> 
    <p>I accept the <span class="legalize">Terms of Service &amp; Privacy Policy</span> and wish to continue</p> 
</div> 

的视图开始时复选框未选中,并使用一些JavaScript代码我使用图像创建一个时髦的复选框,并在幕后更新复选框,以便将正确的值回传。

$('.terms input[type="checkbox"]').prop("checked", true); 

为了调试的目的我已经添加了display:block规则“隐藏” 实际复选框是否已选中实际上是被选中当我点击的形象和我可以证实,这是事实。

而且,使用Firebug,这里是当我点击图片,图片显示的HTML和复选框被选中:

<input type="checkbox" name="AcceptedTerms" value="AcceptedTerms"> 

当窗体发布,AcceptedTerms的值保持假时,如果该值没有被发回到我的服务器。也许HTML缺少一个我不知道的属性。

任何想法或建议吗?

+0

什么形式?你如何发布它? jQuery $ .ajax或类似的东西? – 2012-04-11 01:13:09

+0

我没有发布HTML表单,因为它不相关。对于那个POSTS数据来说很简单,没有什么与$ .ajax或者什么。 :)如果你需要看到它,让我知道,但它没有什么不寻常的。 – 2012-04-11 01:15:56

回答

0
<input type="checkbox" name="AcceptedTerms" value="AcceptedTerms" /> 

应改为

<input type="checkbox" name="AcceptedTerms" value="true" /> 

值需要为真不AcceptedTerms。

如果使用@ Html.CheckBoxFor(X => x.AcceptedTerms)

,你会看到该值设置为true。

0

保持您需要将您的复选框绑定到视图模型的值。我想它是这样的:

@Html.CheckBoxFor(x => x.AcceptedTerms) 

当你的表格被张贴时,它应该有复选框的值,即。如果它被检查(true)或不(false)。