Git rid of the anchor tag and use a LinkButton instead. Or you may use ImageButton since you are displaying images. You may also need to bind your MainID and MainTopic fields in a HiddenField controls. For example:
<ItemTemplate>
<li>
<asp:ImageButton runat="server" ID="ImageButton1" ImageUrl='<%# "~/AppImages/Main/" + Eval("MainID") + ".jpg" %> ‘ OnClick="ImageButton1_Click"
/>
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "MainID") %>' />
<asp:HiddenField ID="HiddenField2" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "MainTopic") %>' />
</li>
</ItemTemplate>
Then on your code behind file, you could set the value to a Session like:
protected void ImageButton1_Click(object sender, ImageClickEventArgs e){
ImageButton b = (ImageButton)sender;
RepeaterItem item = (RepeaterItem)b.NamingContainer;
HiddenField mainID = (HiddenField)item.FindControl("HiddenField1");
HiddenField mainTopic = (HiddenField)item.FindControl("HiddenField2");
Session["MainID"] = mainTopic.Value;
Response.Redirect("~/mid_topics/mid_topics.aspx");
}
On your destination page, you could try something like this:
<a href="index.html">
<img src='<%# "../AppImages/Mid/"+ Session["MainID"].ToString() +"/" + Eval("MidID") + ".jpg" %>' width="96" height="96" alt="spa" title="spa" /></a>
PS: Beware that Sessions can be null, so you may want to check for nulls before binding your Repeater in the destination page.
HTH!