Well I'm going to answer my own question:
Seems I can find out the action by querying the ViewContext. So I have a method in my user control thusly:
protected string GetAction()
{
return (string)Url.ViewContext.RouteData.Values["action"];
}
This works well. However, I initially tried this:
protected string GetAction()
{
return (string)ViewContext.RouteData.Values["action"];
}
This fails because ViewContext is null. It is strange that the user control ViewContext is null, yet Url.ViewContext is not null. Surely this is a bug?