Реализация IDataErrorInfo с SubSonic 2.2 - PullRequest
0 голосов
/ 20 июня 2009

Я перемещаю 1 проект, только уровень данных, проект использует MVC 1.0 и acess mdb: S

Теперь я перехожу на сервер SubSonic + Sql, и все в порядке, кроме случаев, когда я пытаюсь внедрить в свой класс IDataErrorInfo для сообщений проверки, я всегда получаю 2 раза каждое сообщение об ошибке

У меня есть класс таблицы, сгенерированный subsonic: MyTable, затем я расширяю его.

public partial class myTable : IDataErrorInfo{
public string this[string columnName]{
    get{
        switch (columnName.ToUpperInvariant()){
            case "MYFIELD":
                if (string.IsNullOrEmpty(myField)){
                    return "Incorrect MyField";
                }
                break;
            case "ANOTHER":
                if (string.IsNullOrEmpty(myField)){
                    return "Incorrect Another";
                }
                break;
        }
        return "";
    }
}

public string Error{
    get{
        return "";
    }
}

}

В моем контроллере я добавляю к сообщению следующее действие:

public class mycontroller...{
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult myAction(int id, MyTable data)
{
    try
    {
        UpdateModel(data, new[] { "MyField","Another" });
        data.Save();
        return RedirectToAction("Admin");
    }
    catch (Exception ex)
    {
        //ViewData["Error"] = ex.Message;
        return View(data);
    }
}

В моем представлении есть сводка, сгенерированная как Html.ValidationSummary ("Attention:")

Когда я получаю недопустимые данные, мое резюме в 2 раза превышает ошибку:

Внимание:
Неверно MyField
Неверно MyField
Неверно другое
Неверный другой

Я не хочу переписывать форму проверки, здесь много просмотров (около 130). Я думаю, что проблема в каком-то месте в дозвуковой, но я не могу получить, где: S, Пожалуйста, помогите мне :)

С наилучшими пожеланиями и заранее спасибо.

нет способа отловить эту ошибку: (

1 Ответ

0 голосов
/ 21 июня 2009

Какую версию SubSonic вы используете? IIRC, Save () в v2.0.3 может вызвать метод проверки дважды.

...