2011-11-24 377 views
2

我在ASP.NET MVC3 Razor中爲兩個視圖使用相同的模型。例如,我有一個名爲「名字」的文本框。我只需要在一個視圖中驗證此文本框,而不是在其他視圖中驗證。我知道如何在jQuery中實現這一點,但我的要求是不同的,我不得不區分它在模型或特定視圖的行動。ASP.NET MVC3模型驗證

一些事情,如:

[Required(ErrorMessage="First Name is Required")] 
public string FirstName { get; set; } 

但我無法找出如何區分驗證在同一個模型中的兩個觀點。

有人可以幫助我嗎?

+1

爲什麼不能你使用兩種不同的模型? – jgauffin

+0

在我的項目中,我面對如此多的觀點面臨同樣的問題。但它不是爲每個視圖創建每個模型。所以,我需要找到一個解決方案。 –

回答

1

如果您確實希望在不使用不同(視圖)模型的情況下執行此操作,則可以在輸入標記上放置適當的屬性以完成驗證,而不是在模型上指定它。

,如果你需要,你可以做到這一點上面的方式,要求:(假設你使用剃刀語法和不引人注目的驗證)

@Html.TextboxFor(m=>m.FirstName, new { data_val="true", data_val_required="First name is required" }); 
1

你的觀點有不同的關注點,因此,兩種查看模式可能是適當的在這種情況下。如果做不到這一點,我認爲你可能需要把你的驗證別處即不添加對視圖模型驗證屬性,但在控制器方法檢查...

if(string.IsNullOrEmpty(viewmodel.FirstName)) 
{ 
    ViewState.AddError("FirstName", "Required"); 
} 

或類似