3.1.4.6.2.1 ExecuteProxyUpdates

The ExecuteProxyUpdates element indicates that a change was made to a control that requires evaluation in the server environment to produce the correct markup. This markup can be both the persisted markup on the page and display markup to render the control for editing. This element is defined as follows:

 <s:element name="ExecuteProxyUpdates" xmlns:s="http://www.w3.org/2001/XMLSchema">
    <s:complexType>
       <s:sequence>
          <s:element name="updateData" type="s:string" minOccurs="0" maxOccurs="1"/>
       </s:sequence>
    </s:complexType>
 </s:element>

updateData: An XML-encoded string containing details of the update to evaluate on the server. The client MUST send a value that matches this schema, as follows:

 <s:schema elementFormDefault="qualified" xmlns:s="http://www.w3.org/2001/XMLSchema">
    <s:element name="UpdateTransaction">
       <s:complexType>
          <s:sequence>
             <s:element name="Update" minOccurs="1" maxOccurs="unbounded">
                <s:complexType>
                   <s:sequence>
                      <s:element name="Document">
                         <s:complexType>
                            <s:sequence>
                               <s:element name="Register" minOccurs="0" maxOccurs="unbounded">
                                  <s:complexType>
                                     <s:sequence>
                                     </s:sequence>
                                     <s:attribute name="TagPrefix" type="s:string" use="required" />
                                     <s:attribute name="Src" type="s:string" use="optional" />
                                     <s:attribute name="TagName" type="s:string" use="optional" />
                                     <s:attribute name="Assembly" type="s:string" use="optional" />
                                     <s:attribute name="Namespace" type="s:string" use="optional" />
                                  </s:complexType>
                               </s:element>
                               <s:element name="Control" type="controlType" minOccurs="0" maxOccurs="unbounded">
                               </s:element>
                            </s:sequence>
                            <s:attribute name="Url" type="s:string" use="required" />
                            <s:attribute name="ContextUrl" type="s:string" use="optional" />
                            <s:attribute name="WebUrl" type="s:string" use="optional" />
                         </s:complexType>
                      </s:element>
                      <s:element name="Actions" minOccurs="0" maxOccurs="1">
                         <s:complexType>
                            <s:choice maxOccurs="unbounded">
                               <s:element name="Method">
                                  <s:complexType>
                                     <s:sequence>
                                        <s:element name="Param" minOccurs="0" maxOccurs="unbounded">
                                           <s:complexType>
                                              <s:simpleContent>
                                                 <s:extension base="s:string">
                                                    <s:attribute name="Type" type="s:string" use="required"/>
                                                    <s:attribute name="Text" type="s:string" use="optional"/>
                                                 </s:extension>
                                              </s:simpleContent>
                                           </s:complexType>
                                        </s:element>
                                     </s:sequence>
                                     <s:attribute name="UpdateID" type="s:nonNegativeInteger" use="required"/>
                                     <s:attribute name="Name" type="s:string" use="optional" />
                                  </s:complexType>
                               </s:element>
                               <s:element name="Prop" type="propType" />
                            </s:choice>
                         </s:complexType>
                      </s:element>
                   </s:sequence>
                   <s:attribute name="Type" use="required">
                      <s:simpleType>
                         <s:restriction base="s:string">
                            <s:enumeration value="Document" />
                         </s:restriction>
                      </s:simpleType>
                   </s:attribute>
                   <s:anyAttribute namespace="##any" processContents="skip"/>
                </s:complexType>
             </s:element>
          </s:sequence>
       </s:complexType>
    </s:element>
    <s:complexType name="controlType">
       <s:sequence>
          <s:element name="Region" minOccurs="0" maxOccurs="unbounded">
             <s:complexType>
                <s:sequence minOccurs="0" maxOccurs="unbounded">
                   <s:element name="Control" type="controlType" />
                </s:sequence>
                <s:attribute name="Index" type="s:nonNegativeInteger" use="required" />
             </s:complexType>
          </s:element>
       </s:sequence>
       <s:attribute name="NeedsPreview" use="optional">
          <s:simpleType>
             <s:restriction base="s:string">
                <s:enumeration value="True" />
                <s:enumeration value="False" />
             </s:restriction>
          </s:simpleType>
       </s:attribute>
       <s:attribute name="ForceUseDesigner" use="optional">
          <s:simpleType>
             <s:restriction base="s:string">
                <s:enumeration value="True" />
                <s:enumeration value="False" />
             </s:restriction>
          </s:simpleType>
       </s:attribute>
       <s:attribute name="ID" type="s:string" use="optional" />
       <s:attribute name="TagName" type="s:string" use="required" />
       <s:attribute name="OuterHtml" type="s:string" use="required" />
       <s:attribute name="UpdateID" type="s:string" use="required" />
    </s:complexType>
    <s:complexType name="subPropType">
       <s:sequence>
          <s:element name="Prop" type="subPropType" minOccurs="0" maxOccurs="unbounded" />
       </s:sequence>
       <s:attribute name="Name" type="s:string" use="required" />
       <s:attribute name="Text" type="s:string" use="optional" />
    </s:complexType>
    <s:complexType name="propType">
       <s:sequence>
          <s:element name="Prop" type="subPropType" minOccurs="0" maxOccurs="unbounded" />
       </s:sequence>
       <s:attribute name="UpdateID" type="s:string" use="required" />
       <s:attribute name="Source" use="optional">
          <s:simpleType>
             <s:restriction base="s:string">
                <s:enumeration value="Control" />
                <s:enumeration value="Designer" />
                <s:enumeration value="Bound" />
             </s:restriction>
          </s:simpleType>
       </s:attribute>
       <s:attribute name="Name" type="s:string" use="required" />
       <s:attribute name="Text" type="s:string" use="optional" />
    </s:complexType>
 </s:schema>

*.Prop: For properties for which the client does not have the full logic to serialize the value into the Text attribute, the client MUST specify child Prop elements to specify how the server is to serialize the sub-values that constitute the full value of the property. If there are any Prop child elements, the Text attribute MUST NOT be set.

UpdateTransaction: The top-level container for Update elements.

UpdateTransaction.Update: Represents an individual page, the controls on it, and the updates to make to those controls.

The server MUST accept any attributes on this element and the server MUST return them as attributes of the UpdateResponse.Update element that is part of the response to this request. This enables the client to pass a set of opaque data to the server to identify which response UpdateResponse.Update element matches which request UpdateTransaction.Update element.

UpdateTransaction.Update.Type: This attribute MUST be set to "Document".

UpdateTransaction.Update.Document: Specifies the content of the page necessary for performing the requested updates.

UpdateTransaction.Update.Document.Url: The URL of the page being modified.

UpdateTransaction.Update.ContextUrl: If non-empty and different from Url, identifies this as a nested page, where one page reads content from another page to use as portions of its markup for its browse-time processing on the server. The value of Url identifies the page that contains the markup, and ContextUrl identifies the pages that is reading content from the page at Url.

UpdateTransaction.Update.WebUrl: The URL of the site that contains this page.

UpdateTransaction.Update.Document.Register: Specifies the register directives that are necessary to instantiate the controls on the page. Either the Src and the TagName attributes or the Namespace and the Assembly attributes MUST be set.

UpdateTransaction.Update.Document.Register.TagPrefix: The tag prefix for the register directive.

UpdateTransaction.Update.Document.Register.Src: The source for the register directive. If the client sets the Src attribute, the client MUST also set the TagName and the client MUST NOT set the Assembly and the Namespace attributes.

UpdateTransaction.Update.Document.Register.TagName: The tag name of the register directive. If the client sets the TagName attribute, the client MUST also set the Src attribute and the client MUST NOT set the Assembly and the Namespace attributes.

UpdateTransaction.Update.Document.Register.Assembly: The assembly of the register directive. If the client sets this attribute, the client MUST also set the Namespace attribute and the client MUST NOT set the Src and the TagName attributes.

UpdateTransaction.Update.Document.Register.Namespace: The namespace of the register directive. If the client sets the Namespace attribute, the client MUST also set the Assembly attribute and the client MUST NOT set the Src and the TagName attributes.

UpdateTransaction.Update.Document.Control: Specifies one control that exists in the document.

UpdateTransaction.Update.Actions: The container for the list of updates to make to the page.

UpdateTransaction.Update.Actions.Method: Specifies a single update operation to perform on a single control on the server.

UpdateTransaction.Update.Actions.Method.UpdateID: A number that maps to the ID attribute of an UpdateTransaction.Update.Document.*.Control element to determine on which control the operation is performed.

UpdateTransaction.Update.Actions.Method.Name: The name of the operation to perform. If not set, the parent Method element is ignored.

UpdateTransaction.Update.Actions.Method.Param: For operations that take arguments, each Param element specifies one argument of the operation.

UpdateTransaction.Update.Actions.Method.Param.Type: Specifies the class of the object used for the parameter of the method.

UpdateTransaction.Update.Actions.Method.Param.Text: Specifies the value of the object used for the parameter of the method. The server MUST decode the string and process the request.

subPropType: Specifies the serialized value of an object contained in the ancestor propType object.

subPropType.Name: The name of the attribute to update.

subPropType.Text: The full serialized value of the object. If the client sets this attribute, the client MUST NOT create any Prop sub elements.

controlType: Specifies a single control in the document.

controlType.NeedsPreview: If set to TRUE, this specifies that the server MUST return new markup for display in a page editing tool.  If set to FALSE, this specifies that the server MUST NOT return new markup for display in a page editing tool.

controlType.ForceUseDesigner: If set to TRUE, this specifies that the server MUST use the object type of the control to retrieve a name for an auxiliary object type. The auxiliary object type MUST be used to make the updates to the control.

controlType.ID: The identifier of the control that uniquely identifies it on a page.

controlType.TagName: The implementation-specific<23> name for the object-oriented type that is the control.

controlType.OuterHtml: The persisted markup of the control.

controlType.UpdateID: A number that the client sets that the server MUST return as part of updates to this control.

controlType.Region: Specifies a region in a control that can contain other controls.

controlType.Region.Control: Specifies one of the controls located in the parent controlType.Region element region.

controlType.Region.Index: The numerical index of a region in a control that can contain other controls.

propType: Specifies an update to a single sub-object of the object-oriented type that is the control. It MUST be serializable to text. However, the client does not necessarily contain the logic to serialize the value. If the client does not contain the logic to serialize the value, it MUST break the object into its sub-objects to have the server set the value of the sub-object.

propType.UpdateID: Matches the UpdateTransaction.Update.Document.*.Control.UpdateID of the control to update.

propType.Name: The name of the sub-object to update.

propType.Source: Specifies how the server MUST use the provided value. MUST be set to one of the values in the following table.

Value

Description

Control

The server MUST set the value directly on the control.

Bound

If the Text property is set, the server MUST split the value of the Text property on the colon (:). The portion before the first colon is the identifier of a control from which to obtain the value. The portion after the first colon is the name of the sub-object of the control to which the value binds.

Designer

The server MUST use an auxiliary type on the server to set the value of the control.

propType.Text: The full serialized value of the object. If the client sets this attribute, the client MUST NOT create any Prop sub-elements.