2011-10-15 40 views
0

我必須在這裏丟失完全明顯的東西。我剛剛開始使用一個乾淨的項目 - MVC 3/Razor - 並試圖配置不引人注意的JavaScript驗證。我可以找到的所有東西都說我只需要將數據註釋添加到我的模型中,並在web.config中將UnobtrusiveJavaScriptEnabled設置爲true,並且所有內容都應該可以工作。我遇到的問題是,當我看起來和呈現的源代碼時,我的輸入字段甚至沒有data-val屬性。下面是我得到了什麼:數據註釋不包括表單元素上的數據屬性

public class PersonModel 
{ 
    [Required] 
    public string FirstName { get; set; } 

    [Required] 
    public string LastName { get; set; } 
} 

和Controller:

public ActionResult Index() 
    { 
     return View(new Models.PersonModel()); 
    } 

並在視圖:

@model ValidationTest.Models.PersonModel 
... 
@Html.EditorFor(m => m.FirstName) 

我希望看到的輸入標籤呈現,其中包括數據val屬性,但相反,我只看到:

<input class="text-box single-line" id="FirstName" name="FirstName" type="text" value=""> 

我錯過了一個簡單的設置嗎?

回答

4

根據實現:
只有在不引人注意的客戶端驗證被啓用的情況下才呈現屬性,並且僅當我們從未爲此形式的此名稱的字段提交驗證時。另外,如果沒有表單上下文,那麼我們不能呈現這些屬性(我們沒有將它們附加到)。

所以我想你需要把你的EditorFor表單

@using (Html.BeginForm()) 
{ 
    @Html.EditorFor(m => m.FirstName) 
} 
+0

這是它裏面!奇怪的是,我只是在裏面放了一個簡單的

>標籤來測試,但這似乎並沒有觸發它。一旦我用'Html.BeginForm()'將它包裝起來了,它就可以工作了。謝謝! –