这是我的简单课程:
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 & 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 的值仍然为 false,就好像该值没有被发布回我的服务器一样。也许 HTML 缺少我不知道的属性。
有什么想法或建议吗?