2012-01-08 43 views
0

可能重複:
MVC in PHP - fat model or fat controller?MVC - 驗證

Hеlloevеrybody!我有一個關於MVC驗證的問題。哪裏寫輸入驗證更好 - 消費者或模型?在一些着名的框架文檔中,他們寫的是在控制器中完成,而其他人則在模型中完成。請,如果可以的話,給出合理的意見。謝謝。

+0

是的,你說得對,謝謝。對不起。 – user997379 2012-01-08 20:23:20

回答

1

經過驗證駐留在控制器中,明確允許您使驗證更加靈活。但是,它會讓控制器變得混亂,並降低代碼的可讀性和可維護性。

如果您只考慮這兩個選項,在模型中進行驗證似乎更合適。但是,數據註釋可能無法提供足夠的驗證靈活性,因爲您可能需要。

我建議你看看Fluent Validation project,它完全分離驗證,但很容易將它集成到你的視圖模型中。代碼

例如,你不得不用它來寫:

[Validator(typeof(PersonValidator))] 
public class Person { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Email { get; set; } 
    public int Age { get; set; } 
} 

public class PersonValidator : AbstractValidator<Person> { 
    public PersonValidator() { 
     RuleFor(x => x.Id).NotNull(); 
     RuleFor(x => x.Name).Length(0, 10); 
     RuleFor(x => x.Email).EmailAddress(); 
     RuleFor(x => x.Age).InclusiveBetween(18, 60); 
    } 
} 
1

我會說模型應該負責決定它是否處於有效狀態而不是控制器。因此,我會說驗證代碼應該駐留在模型而不是控制器中。

+0

謝謝。我也喜歡模特。 – user997379 2012-01-08 20:24:18

+0

@ user997379很高興我能幫上忙,記住儘管每種情況都可能有所不同,所以沒有硬性規定讓每個人都遵循,你只需根據你所處的情況使用你的最佳判斷。 – 2012-01-08 20:29:11