Attributes

Attributes are one of the secrets to Rock's amazing capability. Pretty much anything in Rock can have an attribute -- and you can add them at runtime or bake them into your code.

Adding Attribute Viewing/Editing Capabilities (the Attribute Value Container)

If you have a block that handles a particular entity which may have attributes, you can use the AttributeValuesContainer to quickly add view and edit capability to the block.

<div class="row">
    <div class="col-md-6">
        <Rock:AttributeValuesContainer ID="avcAttributes" runat="server" />
    </div>
</div>

On View

connectionRequest.LoadAttributes();
avcAttributesReadOnly.AddDisplayControls( connectionRequest, Rock.Security.Authorization.VIEW, this.CurrentPerson );

On Edit

device.LoadAttributes();
avcAttributes.AddEditControls( device );

...or

// to exclude attributes due to security:
avcAttributes.AddEditControls( campus, Rock.Security.Authorization.EDIT, CurrentPerson );

On Save

avcAttributes.GetEditValues( device );
// Put these two saves in one transaction
rockContext.WrapTransaction( () =>
   {
      rockContext.SaveChanges();
      device.SaveAttributeValues();
  } );

Last updated