Я думаю, что возвращение Close ActionMethod - ваш лучший выбор. Вы можете вернуть результат JavaScript из вашего ActionMethod, но затем вы определяете, как ваш html / javascript должен действовать в вашем ActionMethod, а не в View (что мне не особенно нравится).
Другое решение, идентичное вашему, это ...
<script type="text/javascript">
if (window.parent != null)
window.parent.location = '<%= Url.RouteUrl(new {
controller = "YourContoller",
action = "YourAction" }) %>';
else
window.location = '<%= Url.RouteUrl(new {
controller = "YourController",
action = "YourAction" }) %>';
</script>
Затем вы можете специально перенаправить на контроллер / действие, а не просто перезагрузить родительскую страницу. Или, может быть, вы передаете обратно параметр / модель, которая определяет, на какой маршрут вы должны перенаправить.