2013-02-18 53 views
2

我有一個Ajax.BeginForm()在部分視圖中包含一個複選框的布爾值。模型如下;Ajax.BeginForm()與複選框語法錯誤

public class ViewBusinessAdd 
{ 
    [Required(ErrorMessage="Name must be supplied")] 
    [Display(Name = "Business Name")] 
    public string Name { get; set; } 

    [Required(ErrorMessage = "Contact must be supplied")] 
    [Display(Name = "Business Contact")] 
    public string Contact { get; set; } 

    [Display(Name = "Phone Number")] 
    public string Number { get; set; } 

    public string Postcode { get; set; } 

    public Dictionary<string, string> States { get; set; } 

    public string AddressRegion { get; set; } 

    public bool IsFacebookPost { get; set; } 

    public List<RecommendationViewAttribute> Attributes { get; set; } 
} 

CheckBox使用Html助手呈現;

<div class="control-group"> 
    <label class="control-label"> 
     @Html.LabelFor(m => m.IsFacebookPost, "Post recommendation") 
     <img src="~/Content/images/f_logo.png" alt="Facebook" /> 
    </label> 
    <div class="controls"> 
     @Html.CheckBoxFor(m => m.IsFacebookPost) 
    </div> 
</div> 

這將產生以下HTML時呈現;

<input data-val="true" data-val-required="The IsFacebookPost field is required." id="IsFacebookPost" name="IsFacebookPost" type="checkbox" value="true" /><input name="IsFacebookPost" type="hidden" value="false" /> 

當提交表單時,它會在Chrome中產生此錯誤;

Uncaught SyntaxError: Unexpected token u

如果我刪除CheckBox,表單提交時沒有任何錯誤。如果我將其轉換爲非Ajax表單,它也會提交,但不幸的是頁面設計不起作用。

我絕對難住這個 - 我甚至改變了這個RadioButton和存在相同的行爲。有沒有人有任何想法?

編輯:忘了添加它是一個Javascript錯誤。

編輯:錯誤來自下面返回的jQuery庫;

parseJSON: function(data) { // Attempt to parse using the native JSON parser first

if (window.JSON && window.JSON.parse) { 
     return window.JSON.parse(data); 
    } 

但是,這隻會發生,如果我使用剃刀HTML助手來產生複選框。

+0

..this是一個JavaScript錯誤? – 2013-02-18 01:32:47

+0

另外,我忍不住注意到你正在一個標籤內渲染一個標籤.. – 2013-02-18 01:39:12

+0

對不起 - 是的,這是一個JavaScript錯誤。剛注意到這個標籤!將修復它。 – davidredmond 2013-02-18 01:45:54

回答

1

好吧,似乎有一個與jQuery 1.9.1引入的錯誤。我已降級到1.8.3,現在複選框的Razor助手正常工作。如果有人感興趣,可以採取降級措施;

Uninstall-Package jQuery -force

Install-Package jQuery -version 1.8.3

2

我受到了這個,並燒了大約6個小時試圖找出問題是什麼。根據Jquery開發人員的說法,這是1.9.1中的預期行爲。如果你使用jQuery Migrate 1.1.1插件,除了我認爲可以關閉的控制檯警告之外,所有的東西都可以工作。

http://bugs.jquery.com/ticket/13412

見bug報告,這實際上不是一個bug :)