Frage

Ich habe 5 verschiedene Einheiten, für die dynamischen Daten (mit LinqToSql) generiert wurden. Auf Insert (Insert.aspx) von jedem dieser Einheiten, wenn ein Fehler auftritt, würde Ich mag Benutzer benachrichtigen, dass Fehler passiert ist und möglicherweise einige generische Fehlermeldung an.

1) Ich spreche nicht über regelmäßige Pflichtfeld Fehler aber so etwas wie „Unique Einschränkungsverletzung“

2) Ich kann es für jede Seite separat durch so etwas wie dies zu tun:

protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e) {
    if (e.Exception == null || e.ExceptionHandled)
    {
        Response.Redirect(table.ListActionPath);
    }
    else
    {
        //OtherErrors is the label on the page
        OtherErrors.Visible = true;
        OtherErrors.Text = e.Exception.Message;
        OtherErrors.DataBind();
        e.ExceptionHandled = true;
        e.KeepInInsertMode = true;

    }
}

3) ABER, ich möchte etwas sehr generisch erstellt, die für alle Einsätze auf alle Unternehmen arbeiten

War es hilfreich?

Lösung 3

    public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
{

    try
    {
        base.SubmitChanges(failureMode);
    }
    catch (Exception e)
    {
        throw new ValidationException("Something is wrong", e);
    }

}

Andere Tipps

Sie können Validierung anpassen, indem Sie einen Ereignishandler in der ADO.NET Entity Framework-Klasse zu erstellen:

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.DynamicData;
using System;
using System.Data;
using System.Data.Objects;

namespace AdventureWorksLTModel 
{
    public partial class AdventureWorksLTEntities 
    {
        partial void OnContextCreated() 
        {
            this.SavingChanges += new System.EventHandler(OnSavingChanges);
        }

        public void OnSavingChanges(object sender, System.EventArgs e) 
        {
            var stateManager = ((AdventureWorksLTEntities)sender).ObjectStateManager;
            var changedEntities = ObjectStateManager.GetObjectStateEntries (EntityState.Modified | EntityState.Added);

            // validation check logic
            throw new ValidationException("Something went wrong.");
        }

    }
}

Jede Validierung Ausnahmen, die im Datenmodell geworfen werden, werden von der DynamicValidator Kontrolle gefangen. Die Seitenvorlagen mit einem Dynamic Data Projekt enthalten enthalten eine DynamicValidator Steuerung, die die Validierungen Fehler auf der Seite angezeigt wird.

Ich kann nicht in vollem Umfang testen dies für Ihre Situation, aber Sie die SubmitChanges Methode überschreiben könnte.

 public partial class MyNorthwindDataContext : NorthwindDataContext
 {

  public MyNorthwindDataContext()
  {

  }

  public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
  {
   //catch error logic here...

   base.SubmitChanges(failureMode);
  }
 }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top