Вид и контроллер в asp.net mvc3 - контроллер должен соответствовать виду один в один? - PullRequest
2 голосов
/ 23 ноября 2011

У меня очень типичная ситуация в любом приложении, где у меня есть следующие функции:

  • создание новой записи
  • редактирование существующей записи
  • , так что другие не имеют значенияДействия

ИМО, создание и редактирование должны обслуживаться одним и тем же представлением, но разными действиями.Но похоже, что мне нужно, чтобы имя действия совпадало с именем представления .... Вы бы использовали частичные представления для этого?Я бы не стал усложнять этот сценарий - он очень прост и встречается практически в каждом веб-приложении.

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011

Действие может вернуть представление с другим именем следующим образом:

public ActionResult OneName()
{
    return View("OtherName");
}

Если вы не укажете имя представления (View (""), тогда представление будет представлением с именем действия

0 голосов
/ 23 ноября 2011

Я бы просто использовал одно и то же действие и использовал бы идентификатор, чтобы определить, является ли это новой записью или обновляет существующую:

/Forum/Post/Edit/0 создать новую запись

/Forum/Post/Edit/10457 обновить запись с ID 10457

Однако, поскольку вы настаиваете на использовании разных действий, почему бы просто не создать 2 действия, оба возвращающие одно и то же представление?

public class PostController : Controller
{
    public ActionResult Create(Post post)
    {
        // work your magic...

        return View("Edit", post);
    }

    public ActionResult Update(Post post)
    {
        // work your magic...

        return View("Edit", post);
    }    
}

Если это не сработает в вашем сценарии, у вас останутся частичные представления.

0 голосов
/ 23 ноября 2011

Частичные просмотры - отличный ответ.Я бы посоветовал вам посмотреть, как это делает пакет MvcScaffold NuGet. См. Здесь или получите пакет в Visual Studio.

...