made Spring.NET partial trust ready

This commit is contained in:
eeichinger
2009-05-19 04:09:27 +00:00
parent 04ff7801f7
commit c356bc76a0
41 changed files with 3264 additions and 2120 deletions

View File

@@ -21,19 +21,19 @@ public partial class DataBinding_EmployeeInfo_Default : Spring.Web.UI.Page
/// </summary>
protected override void InitializeDataBindings()
{
BindingManager.AddBinding("txtId.Text", "Employee.Id");
BindingManager.AddBinding("txtFirstName.Text", "Employee.FirstName");
BindingManager.AddBinding("txtLastName.Text", "Employee.LastName");
BindingManager.AddBinding("txtDOB.Text", "Employee.DateOfBirth");
BindingManager.AddBinding("txtSalary.Text", "Employee.Salary");
BindingManager.AddBinding("rbgGender.Value", "Employee.Gender");
BindingManager.AddBinding("ddlAddressType.SelectedValue", "Employee.MailingAddress.AddressType");
BindingManager.AddBinding("txtStreet1.Text", "Employee.MailingAddress.Street1");
BindingManager.AddBinding("txtStreet2.Text", "Employee.MailingAddress.Street2");
BindingManager.AddBinding("txtCity.Text", "Employee.MailingAddress.City");
BindingManager.AddBinding("txtState.Text", "Employee.MailingAddress.State");
BindingManager.AddBinding("txtPostalCode.Text", "Employee.MailingAddress.PostalCode");
BindingManager.AddBinding("txtCountry.Text", "Employee.MailingAddress.Country");
BindingManager.AddBinding("FindControl('txtId').Text", "Employee.Id");
BindingManager.AddBinding("FindControl('txtFirstName').Text", "Employee.FirstName");
BindingManager.AddBinding("FindControl('txtLastName').Text", "Employee.LastName");
BindingManager.AddBinding("FindControl('txtDOB').Text", "Employee.DateOfBirth");
BindingManager.AddBinding("FindControl('txtSalary').Text", "Employee.Salary");
BindingManager.AddBinding("FindControl('rbgGender').Value", "Employee.Gender");
BindingManager.AddBinding("FindControl('ddlAddressType').SelectedValue", "Employee.MailingAddress.AddressType");
BindingManager.AddBinding("FindControl('txtStreet1').Text", "Employee.MailingAddress.Street1");
BindingManager.AddBinding("FindControl('txtStreet2').Text", "Employee.MailingAddress.Street2");
BindingManager.AddBinding("FindControl('txtCity').Text", "Employee.MailingAddress.City");
BindingManager.AddBinding("FindControl('txtState').Text", "Employee.MailingAddress.State");
BindingManager.AddBinding("FindControl('txtPostalCode').Text", "Employee.MailingAddress.PostalCode");
BindingManager.AddBinding("FindControl('txtCountry').Text", "Employee.MailingAddress.Country");
}
protected void Page_Load(object sender, EventArgs e)

View File

@@ -1,4 +1,4 @@
<%@ Page Language="C#" EnableViewState="false" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="DataBinding_EventHandling_Default" %>
<%@ Page Language="C#" Debug="true" EnableViewState="false" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="DataBinding_EventHandling_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

View File

@@ -1,4 +1,5 @@
using System;
using System.Web.UI.WebControls;
using Spring.DataBinding;
/// <summary>
@@ -22,8 +23,8 @@ public partial class DataBinding_EventHandling_Default : Spring.Web.UI.Page
/// </summary>
protected override void InitializeDataBindings()
{
BindingManager.AddBinding("txtName.Text", "Name");
BindingManager.AddBinding("lblName.Text", "Name", BindingDirection.TargetToSource);
BindingManager.AddBinding("FindControl('txtName').Text", "Name");
BindingManager.AddBinding("FindControl('lblName').Text", "Name", BindingDirection.TargetToSource);
}
protected void Page_Load(object sender, EventArgs e)

View File

@@ -22,8 +22,8 @@ public partial class DataBinding_HelloWorld_Default : Spring.Web.UI.Page
/// </summary>
protected override void InitializeDataBindings()
{
BindingManager.AddBinding("txtName.Text", "Name");
BindingManager.AddBinding("lblName.Text", "Name", BindingDirection.TargetToSource);
BindingManager.AddBinding("FindControl('txtName').Text", "Name");
BindingManager.AddBinding("FindControl('lblName').Text", "Name", BindingDirection.TargetToSource);
}
protected void Page_Load(object sender, EventArgs e)

View File

@@ -26,19 +26,19 @@ public partial class DataBinding_Lists_Default : Page
/// </summary>
protected override void InitializeDataBindings()
{
BindingManager.AddBinding("txtId.Text", "Employee.Id");
BindingManager.AddBinding("txtFirstName.Text", "Employee.FirstName");
BindingManager.AddBinding("FindControl('txtId').Text", "Employee.Id");
BindingManager.AddBinding("FindControl('txtFirstName').Text", "Employee.FirstName");
// this is rather verbose to show how it works
// the formatter must convert between ListControl values and domain objects identified by these values (e.g. a key)
IFormatter dsFormatter = new DataSourceItemFormatter("DataSource", "DataValueField");
// bind the lstHobbies control to Employee.Hobbies IList
MultipleSelectionListControlBinding listBinding = new MultipleSelectionListControlBinding("lstHobbies", "Employee.Hobbies", BindingDirection.Bidirectional, dsFormatter);
MultipleSelectionListControlBinding listBinding = new MultipleSelectionListControlBinding("FindControl('lstHobbies')", "Employee.Hobbies", BindingDirection.Bidirectional, dsFormatter);
BindingManager.AddBinding(listBinding);
// use simple name=value binding
BindingManager.AddBinding(new MultipleSelectionListControlBinding("lstFavoriteFood", "Employee.FavoriteFood", BindingDirection.Bidirectional, new NullFormatter()));
BindingManager.AddBinding(new MultipleSelectionListControlBinding("FindControl('lstFavoriteFood')", "Employee.FavoriteFood", BindingDirection.Bidirectional, new NullFormatter()));
}
protected override void OnInitializeControls(EventArgs e)

View File

@@ -18,22 +18,22 @@ public partial class EmployeeInfoEditor : Spring.Web.UI.UserControl
/// </summary>
protected override void InitializeDataBindings()
{
BindingManager.AddBinding("txtId.Text", "Employee.Id")
BindingManager.AddBinding("FindControl('txtId').Text", "Employee.Id")
.SetErrorMessage("ID has to be an integer", "id.errors", "summary");
BindingManager.AddBinding("txtFirstName.Text", "Employee.FirstName");
BindingManager.AddBinding("txtLastName.Text", "Employee.LastName");
BindingManager.AddBinding("txtDOB.Text", "Employee.DateOfBirth")
BindingManager.AddBinding("FindControl('txtFirstName').Text", "Employee.FirstName");
BindingManager.AddBinding("FindControl('txtLastName').Text", "Employee.LastName");
BindingManager.AddBinding("FindControl('txtDOB').Text", "Employee.DateOfBirth")
.SetErrorMessage("Invalid date value", "dob.errors", "summary");
BindingManager.AddBinding("txtSalary.Text", "Employee.Salary", new CurrencyFormatter())
BindingManager.AddBinding("FindControl('txtSalary').Text", "Employee.Salary", new CurrencyFormatter())
.SetErrorMessage("Salary must be a valid currency value.", "salary.errors", "summary");
BindingManager.AddBinding("rbgGender.Value", "Employee.Gender");
BindingManager.AddBinding("ddlAddressType.SelectedValue", "Employee.MailingAddress.AddressType");
BindingManager.AddBinding("txtStreet1.Text", "Employee.MailingAddress.Street1");
BindingManager.AddBinding("txtStreet2.Text", "Employee.MailingAddress.Street2");
BindingManager.AddBinding("txtCity.Text", "Employee.MailingAddress.City");
BindingManager.AddBinding("txtState.Text", "Employee.MailingAddress.State");
BindingManager.AddBinding("txtPostalCode.Text", "Employee.MailingAddress.PostalCode");
BindingManager.AddBinding("txtCountry.Text", "Employee.MailingAddress.Country");
BindingManager.AddBinding("FindControl('rbgGender').Value", "Employee.Gender");
BindingManager.AddBinding("FindControl('ddlAddressType').SelectedValue", "Employee.MailingAddress.AddressType");
BindingManager.AddBinding("FindControl('txtStreet1').Text", "Employee.MailingAddress.Street1");
BindingManager.AddBinding("FindControl('txtStreet2').Text", "Employee.MailingAddress.Street2");
BindingManager.AddBinding("FindControl('txtCity').Text", "Employee.MailingAddress.City");
BindingManager.AddBinding("FindControl('txtState').Text", "Employee.MailingAddress.State");
BindingManager.AddBinding("FindControl('txtPostalCode').Text", "Employee.MailingAddress.PostalCode");
BindingManager.AddBinding("FindControl('txtCountry').Text", "Employee.MailingAddress.Country");
}
protected void btnSave_Click(object sender, EventArgs e)

View File

@@ -34,7 +34,7 @@
so you can see how Employee object was populated by the framework.
</p>
<!-- this summary control captures validation errors on this page -->
<spring:ValidationSummary ID="summary" Provider="summary" ValidationContainerName="Editor" runat="server" />
<spring:ValidationSummary ID="summary" Provider="summary" runat="server" />
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td>Employee ID:</td>

View File

@@ -22,22 +22,26 @@ public partial class DataBinding_RobustEmployeeInfo_Default : Spring.Web.UI.Page
/// </summary>
protected override void InitializeDataBindings()
{
BindingManager.AddBinding("txtId.Text", "Employee.Id")
// the line below would also work in full trusted environments due to control members
// being generated as protected members by ASP.NET:
// BindingManager.AddBinding("txtId.Text", "Employee.Id")
BindingManager.AddBinding("FindControl('txtId').Text", "Employee.Id")
.SetErrorMessage("ID has to be an integer", "id.errors"); // send msg to "id.errors" provider
BindingManager.AddBinding("txtFirstName.Text", "Employee.FirstName");
BindingManager.AddBinding("txtLastName.Text", "Employee.LastName");
BindingManager.AddBinding("txtDOB.Text", "Employee.DateOfBirth")
BindingManager.AddBinding("FindControl('txtFirstName').Text", "Employee.FirstName");
BindingManager.AddBinding("FindControl('txtLastName').Text", "Employee.LastName");
BindingManager.AddBinding("FindControl('txtDOB').Text", "Employee.DateOfBirth")
.SetErrorMessage("Invalid date value", "dob.errors");
BindingManager.AddBinding("txtSalary.Text", "Employee.Salary", new CurrencyFormatter())
BindingManager.AddBinding("FindControl('txtSalary').Text", "Employee.Salary", new CurrencyFormatter())
.SetErrorMessage("Salary must be a valid currency value.", "salary.errors");
BindingManager.AddBinding("rbgGender.Value", "Employee.Gender");
BindingManager.AddBinding("ddlAddressType.SelectedValue", "Employee.MailingAddress.AddressType");
BindingManager.AddBinding("txtStreet1.Text", "Employee.MailingAddress.Street1");
BindingManager.AddBinding("txtStreet2.Text", "Employee.MailingAddress.Street2");
BindingManager.AddBinding("txtCity.Text", "Employee.MailingAddress.City");
BindingManager.AddBinding("txtState.Text", "Employee.MailingAddress.State");
BindingManager.AddBinding("txtPostalCode.Text", "Employee.MailingAddress.PostalCode");
BindingManager.AddBinding("txtCountry.Text", "Employee.MailingAddress.Country");
BindingManager.AddBinding("FindControl('rbgGender').Value", "Employee.Gender");
BindingManager.AddBinding("FindControl('ddlAddressType').SelectedValue", "Employee.MailingAddress.AddressType");
BindingManager.AddBinding("FindControl('txtStreet1').Text", "Employee.MailingAddress.Street1");
BindingManager.AddBinding("FindControl('txtStreet2').Text", "Employee.MailingAddress.Street2");
BindingManager.AddBinding("FindControl('txtCity').Text", "Employee.MailingAddress.City");
BindingManager.AddBinding("FindControl('txtState').Text", "Employee.MailingAddress.State");
BindingManager.AddBinding("FindControl('txtPostalCode').Text", "Employee.MailingAddress.PostalCode");
BindingManager.AddBinding("FindControl('txtCountry').Text", "Employee.MailingAddress.Country");
}
protected void Page_Load(object sender, EventArgs e)

View File

@@ -7,7 +7,7 @@
Spring.Web allows for "symbolic" names for navigation targets and navigate to such a target by
calling SetResult( symbolicName ) on the page object.
</p>
<spring:DataBindingPanel runat="server">
<spring:DataBindingPanel ID="ctlDataBindingPanel" runat="server">
<table cellpadding="3" cellspacing="3" border="0">
<spring:Panel VisibleIf="Context.Request['fromInvalidInput'] != null" runat="server">
<tr>

View File

@@ -2,11 +2,11 @@
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web" requirePermission="false"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" requirePermission="false"/>
</sectionGroup>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" requirePermission="false"/>
</sectionGroup>
</configSections>
<!-- to see logging output in the attached debugger -->
@@ -18,6 +18,13 @@
</logging>
</common>
<system.web>
<securityPolicy>
<trustLevel name="Custom" policyFile="web_mediumtrust.config"/>
</securityPolicy>
<trust level="Full" /> <!-- install Spring assemblies in GAC and change to level to 'Custom' to run in partial trust -->
<globalization culture="en-US" uiCulture="en-US"/>
<customErrors mode="Off"/>
<compilation debug="true">
</compilation>
@@ -31,9 +38,9 @@
-->
<httpModules>
<add name="SpringModule" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
<add name="HtmlCommentAppender" type="HtmlCommentAppenderModule"/>
<!-- this custom module is only for DI demonstration purposes -->
</httpModules>
<!-- this custom module is only for DI demonstration purposes -->
<add name="HtmlCommentAppender" type="HtmlCommentAppenderModule"/>
</httpModules>
<httpHandlers>
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
</httpHandlers>

View File

@@ -0,0 +1,74 @@
<configuration>
<mscorlib>
<security>
<policy>
<PolicyLevel version="1">
<SecurityClasses>
<SecurityClass Name="AllMembershipCondition" Description="System.Security.Policy.AllMembershipCondition, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="AspNetHostingPermission" Description="System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="DnsPermission" Description="System.Net.DnsPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="EnvironmentPermission" Description="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="FileIOPermission" Description="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="FirstMatchCodeGroup" Description="System.Security.Policy.FirstMatchCodeGroup, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="IsolatedStorageFilePermission" Description="System.Security.Permissions.IsolatedStorageFilePermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="NamedPermissionSet" Description="System.Security.NamedPermissionSet"/>
<SecurityClass Name="PrintingPermission" Description="System.Drawing.Printing.PrintingPermission, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<SecurityClass Name="SecurityPermission" Description="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="SmtpPermission" Description="System.Net.Mail.SmtpPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="SqlClientPermission" Description="System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="StrongNameMembershipCondition" Description="System.Security.Policy.StrongNameMembershipCondition, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="UIPermission" Description="System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="UnionCodeGroup" Description="System.Security.Policy.UnionCodeGroup, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="UrlMembershipCondition" Description="System.Security.Policy.UrlMembershipCondition, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="WebPermission" Description="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="ZoneMembershipCondition" Description="System.Security.Policy.ZoneMembershipCondition, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="ReflectionPermission" Description="System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/></SecurityClasses>
<NamedPermissionSets>
<PermissionSet class="NamedPermissionSet" version="1" Unrestricted="true" Name="FullTrust" Description="Allows full access to all resources"/>
<PermissionSet class="NamedPermissionSet" version="1" Name="Nothing" Description="Denies all resources, including the right to execute"/>
<PermissionSet class="NamedPermissionSet" version="1" Name="ASP.Net">
<IPermission class="AspNetHostingPermission" version="1" Level="Medium"/>
<IPermission class="DnsPermission" version="1" Unrestricted="true"/>
<IPermission class="EnvironmentPermission" version="1" Read="TEMP;TMP;USERNAME;OS;COMPUTERNAME"/>
<IPermission class="FileIOPermission" version="1" Read="$AppDir$" Write="$AppDir$" Append="$AppDir$" PathDiscovery="$AppDir$"/>
<IPermission class="IsolatedStorageFilePermission" version="1" Allowed="AssemblyIsolationByUser" UserQuota="9223372036854775807"/>
<IPermission class="PrintingPermission" version="1" Level="DefaultPrinting"/>
<IPermission class="SecurityPermission" version="1" Flags="Assertion, Execution, ControlThread, ControlPrincipal, RemotingConfiguration"/>
<IPermission class="SmtpPermission" version="1" Access="Connect"/>
<IPermission class="SqlClientPermission" version="1" Unrestricted="true"/>
<IPermission class="WebPermission" version="1">
<ConnectAccess>
<URI uri="$OriginHost$"/>
</ConnectAccess>
</IPermission>
<IPermission class="ReflectionPermission" version="1" Flags="RestrictedMemberAccess"/></PermissionSet>
</NamedPermissionSets>
<CodeGroup class="FirstMatchCodeGroup" version="1" PermissionSetName="Nothing">
<IMembershipCondition class="AllMembershipCondition" version="1"/>
<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust" Name="NetCommon_Strong_Name" Description="This code group grants code signed with the NetCommon strong name full trust. ">
<IMembershipCondition class="StrongNameMembershipCondition" version="1" PublicKeyBlob="0024000004800000940000000602000000240000525341310004000001000100f14d9774aa0ccf08735569d219a51874fc424da7375e4951e1be94416cd27ad28615485a08145acad9b624e0d71f78972051eba675e203eff9b72710b5b68ba970afdccdec36f5ccc4ae30f2962915333fbaba9801da256f0382e201b025b7bb22a835be59cca993e2dec9b8c2ce4738b697087430a37470d0889987b0af8fab"/>
</CodeGroup>
<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust" Name="Spring_Strong_Name" Description="This code group grants code signed with the Spring.NET strong name full trust. ">
<IMembershipCondition class="StrongNameMembershipCondition" version="1" PublicKeyBlob="0024000004800000940000000602000000240000525341310004000001000100b5af6fc0c5a1a93adbee2cb424fe0a23ca6430fe0620dd9a00393be236e5d8ab481c8ad4a68c35a62e474695d63658313e4f35a2f29cd38c072f73227eaec5f0b6fb6f9e0ed6ab4f105a393f709eae6cfd010febebb004dd230d51b5e8aec839b6832c21ec7ac3b6cadba8d9b8870b1ab1507cabea54dcacd2c74ea45231a3bd"/>
</CodeGroup>
<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="ASP.Net">
<IMembershipCondition class="UrlMembershipCondition" version="1" Url="$AppDirUrl$/*"/>
</CodeGroup>
<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="ASP.Net">
<IMembershipCondition class="UrlMembershipCondition" version="1" Url="$CodeGen$/*"/>
</CodeGroup>
<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="Nothing">
<IMembershipCondition class="ZoneMembershipCondition" version="1" Zone="MyComputer"/>
<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust" Name="Microsoft_Strong_Name" Description="This code group grants code signed with the Microsoft strong name full trust. ">
<IMembershipCondition class="StrongNameMembershipCondition" version="1" PublicKeyBlob="002400000480000094000000060200000024000052534131000400000100010007D1FA57C4AED9F0A32E84AA0FAEFD0DE9E8FD6AEC8F87FB03766C834C99921EB23BE79AD9D5DCC1DD9AD236132102900B723CF980957FC4E177108FC607774F29E8320E92EA05ECE4E821C0A5EFE8F1645C4C0C93C1AB99285D622CAA652C1DFAD63D745D6F2DE5F17E5EAF0FC4963D261C8A12436518206DC093344D5AD293"/>
</CodeGroup>
<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust" Name="Ecma_Strong_Name" Description="This code group grants code signed with the ECMA strong name full trust. ">
<IMembershipCondition class="StrongNameMembershipCondition" version="1" PublicKeyBlob="00000000000000000400000000000000"/>
</CodeGroup>
</CodeGroup>
</CodeGroup>
</PolicyLevel>
</policy>
</security>
</mscorlib>
</configuration>