Removing repetitive code in ASP.NET MVC Controller actions?
I like the direction Scott started but would recommend to take it another layer down so that the GenerateSignature method does not have to do discovery with the thing object (Do I have an Id or do I have string X/Y/Z or do I only have Key/Signature, etc).

public class MySignatureCreateRead
{
    public string Key { get; set; }
    public string Signature { get; set; }
}

public class MySignatureUpdateDelete : MySignatureCreateRead
{
    public int Id { get; set; }
}

public class MySignatureAction : MySignatureCreateRead
{
    public string X { get; set; }
    public string Y { get; set; }
    public string Z { get; set; }
}


Which puts the ActionResults like:

public ActionResult List(MySignatureCreateRead signature) { GetSignature(signature); /* etc */ }
public ActionResult Add(MySignatureCreateRead signature) { GetSignature(signature); /* etc */ }
public ActionResult Update(MySignatureUpdateDelete signature) { GetSignature(signature); /* etc */ }
public ActionResult Delete(MySignatureUpdateDelete signature) { GetSignature(signature); /* etc */ }
public ActionResult Action1(MySignatureAction signature) { GetSignature(signature); /* etc */ }


This also gives you objects to strongly bind views to.