1.CHtml::ajaxLink. Если Вы формируете список, то лучше не использовать CHtml::ajaxLink, так как в итоге если у вас достаточно много элементов в списке, то код будет захламлен одинаковыми функциями в js, которые будут отличаться только $rows[$i]['id'], лучше в виде написать одну функцию на все ссылки этого списка, а параметр $rows[$i]['id'] передавать в атрибут типа data-id, либо как вариант формировать простую ссылку указывая путь в href атрибут, а при клике на эту ссылку отправлять аякс запрос по этому пути, тогда лишних танцев с $rows[$i]['id'] не будет.
2. Запросы типа $page = Page::model()->findByPk($page)->link; лучше делать в контроллере а не в виде, нарушается принцип MVC.
3. Для получения ответа на Ваш вопрос можете более точно сформировать то что Вам нужно? Я к примеру понял что Вам нужно проверять если ли значение link с $_POST['id'] в сессии, и если оно есть передавать во фрейм, и если его нет то запрашивать, сохранять в сессию и опять же передавать во фрейм?
Как вариант:
public function actionReq($id)
{
$model = Page::model()->findByPk($id);
if ($model === null) {
throw new CHttpException(404, 'Не найден запрашиваемый элемент.');
}
$this->renderPartial('application.views.site.pages.frameset',array('link'=>$model->link));
}
Тогда путь к этой функции будет ...$this->createUrl('req',array('id'=>$rows[$i]['id']))