Czasem pojawia się potrzeba użycia sesji z poziomu własnego IHttpHandler. Próba bezpośredniego dostępu do kontenera poprzez HttpContext często kończy się wyjątkiem/zwróconym nullem - mimo, że kilka sekund wcześniej ustawiona została z poziomu strony aspx zmienna. Dlaczego tak się dzieje?
ASP.NET wymaga oznaczenia handlera korzystającego z sesji w jeden z dwóch sposobów:
- IReadOnlySessionState - kiedy potrzebna jest tylko opcja odczytu danych z sesji,
- IRequiresSessionState - kiedy również zapis się przyda.
Pokazywanie postów oznaczonych etykietą null. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą null. Pokaż wszystkie posty
czwartek, 5 listopada 2009
środa, 4 listopada 2009
FormView - inserting obiektów, DropDownList, nullable
Przy wstawianiu obiektów, jeżeli jedno z jego pól może być null-em pojawiają się problemy. W moim wypadku było to index out of... Poszukiwania w Google nic nie dały (żadnych konkretnych odpowiedzi).
Znalezione rozwiązanie polega na dodaniu metody OnItemInserting, która zawiera +/- następujący kod:
dodaniu do FormView atrybutu oniteminserting="AddProductFormView_ItemInserting" .
DropDownList powinien wyglądać +/- następująco:
<asp:dropdownlist id="ProductCalculationMethodList" runat="server" selectedvalue='<%# Bind("CalculationMethodId") %>' DataSourceID="CalculationMethodsDataSource" DataTextField="Name" DataValueField="Id" AppendDataBoundItems="true" Width="100%">
<asp:listitem selected="True" text="" value="-1"></asp:listitem>
</asp:DropDownList>
Elementy istotne zaznaczone kolorem czerwonym :-)
Znalezione rozwiązanie polega na dodaniu metody OnItemInserting, która zawiera +/- następujący kod:
protected void AddProductFormView_ItemInserting(object sender, FormViewInsertEventArgs e)
{
if (e.Values["CalculationMethodId"] == "-1")
e.Values["CalculationMethodId"] = null;
}
{
if (e.Values["CalculationMethodId"] == "-1")
e.Values["CalculationMethodId"] = null;
}
dodaniu do FormView atrybutu oniteminserting="AddProductFormView_ItemInserting" .
DropDownList powinien wyglądać +/- następująco:
<asp:dropdownlist id="ProductCalculationMethodList" runat="server" selectedvalue='<%# Bind("CalculationMethodId") %>' DataSourceID="CalculationMethodsDataSource" DataTextField="Name" DataValueField="Id" AppendDataBoundItems="true" Width="100%">
<asp:listitem selected="True" text="" value="-1"></asp:listitem>
</asp:DropDownList>
Elementy istotne zaznaczone kolorem czerwonym :-)
Subskrybuj:
Posty (Atom)