Если вы сражаетесь с MVC, MVC не победит, но вы проиграете
Проблема в том, что вы пытаетесь вызвать действие из представления. Что означает, что вы серьезно не получаете MVC. Это означает, что вы пытаетесь использовать представление MVC, как если бы это была веб-форма.
Представления в MVC - это просто шаблоны для заполнения полноформатных данных, которые пользователь может легко переварить.
MVC против веб-форм - Повесть о двух рождественских запросах
Позволяет использовать сезонную аналогию.
Сказка о запросе MVC:
В MVC view
похоже на вашу рождественскую индейку. Индейка наполняется данными и подается пользователю.
Controller
похож на повара. Семья просит у него индейку, и он готовит ее и подает на рождественский ужин. Чтобы приготовить индейку, повар должен сначала получить ее из магазина. Магазин, где повар покупает индейку, - Model
.
Весь процесс имеет смысл.
Сказ о запросе веб-форм ASP.NET:
В ASP.NET Web Forms ситуация другая.
Опять семья хочет Турцию на рождественский ужин. Вместо того чтобы готовить, они делают что-то невероятное:
Вместо того, чтобы спрашивать повара, семья спрашивает индейку.
Индейка говорит "ОК" (или, скорее, "Gobble, goggle, gobble"). Затем он убивает себя, срывает с себя, готовит сам, и, если он не взорвался в микроволновой печи, всесожжение подается семье (пользователю).
Вместо того, чтобы наполняться множеством прекрасных, хорошо приготовленных данных, он наполняется непривлекательной и неусвояемой липкостью под названием ViewState, которая напоминает рождественский ужин астронавта.
Обед настолько отвратителен, что веселое праздничное собрание превращается в хаос, и кто-то поджигает Деда Мороза, который все еще застрял в дымоходе (он съел слишком много пирогов).
Рудольф, тем временем, отправился обратно в Лапландию, чтобы успеть восстановиться к сезону гона, который напоминает его Рождество.
С Рождеством всех (или, по крайней мере, тех из вас, кто в Рождество).