Это общая проблема для разработки ASP.NET JS. Что касается меня, я использую один и тот же подход каждый раз, и он выглядит хорошо.
Я привык к ООП в Javascript, поэтому большинство моих внешних файлов JS выглядит так:
function CouponManager()
{
}
И в коде .aspx я делаю:
<script language="javascript">
var couponManager = new CouponManager();
</script>
Если мне нужно передать некоторые параметры, я изменяю объявление класса на:
function CouponManager(params)
{
// .. stuff here
this.initialize = function(initParams)
{
// .. accessing initParams variable for server control IDs
};
this.initialize(params);
}
А из кода .aspx я делаю следующее:
<script language="javascript">
var couponManager = new CouponManager
({
txtCouponNameId = '<%= txtCouponName.ClientID %>',
txtCouponDescriptionId = '<%= txtCouponDescription.ClientID %>'
});
</script>
Этот подход позволяет мне отделить JS от страницы .aspx и иметь все зависимости управления сервером в одном теге.