From the technical point of view, there aren't any big differences between the two, so it is a question of coding style and personal preferences. Here are a couple of points that you can consider:
- The declarative approach using the ASP.NET markup is usually shorter and you don't need a large method that does all the initialization
- If you initialize handlers in the code-behind you don't pollute the declarative markup with aspects relevant only for the code-behind (though I don't think this is a big issue)
In some cases you can use features such as C# lambda expressions nicely in the code-behind:
protected void Page_Init(object sender, EventArgs e) {
this.btnNext += (s1, e1) => MovePage(this.CurrentPage + 1);
this.btnPrev += (s2, e2) => MovePage(this.CurrentPage - 1);
// ...
}
Something like this can reduce the number of single-purpose event handling methods that you need to write, which should make the code-behind simpler.
However, I think that the general recommendation for simple ASP.NET applications is to use the declarative event handler binding, unless you have some good reason for not doing that (e.g. as in the example above).