Простой способ проверить изменения модели представления в asp.mvc - PullRequest
2 голосов
/ 26 мая 2009

Есть ли простой способ проверить модель представления (не модель домена) на наличие изменений в обратной записи?

    public ActionResult Billing()
    {
        var viewModel = new BillingViewModel();

        viewModel.prop1 = DomainService.Prop1 // Map Domain model to View Model

        return View(viewModel);
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Billing(BillingViewModel viewModel)
    {
        //TODO: Check if ViewModel has changes and save to Domain Repository if valid
        if (ValidateBillingViewModel(viewModel))
        {

Моим домашним решением было бы сохранить хэш модели в скрытом поле и проверить его снова, но есть ли лучший вариант?

Ответы [ 2 ]

3 голосов
/ 26 мая 2009

На данный момент у asp.net MVC довольно анемичная модель (то есть нет). Хорошей новостью является то, что вы можете подключить любой ORM / DAL, который вам нравится. Плохая новость заключается в том, что тот, который поддерживается MS (Linq-to-SQL), не имеет грязного флага.

Я бы рекомендовал проверить SubSonic , который является довольно зрелой реализацией ActiveRecord (которая также имеет грязный флаг)

2 голосов
/ 26 мая 2009

Канонический способ в MVC состоит в том, чтобы получить (или сохранить) модель на стороне сервера и использовать UpdateModel или привязку модели для обновления полей во вновь извлеченной (сохраненной) модели. На ваш ORM будет возложена обязанность определять, изменилось ли какое-либо из свойств модели, чтобы он знал, изменилось ли какое-либо из свойств. LINQ to SQL делает это, вызывая обработчики PropertyChanged в автоматически сгенерированных классах сущностей модели, когда для свойств установлено значение, отличное от исходного значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...