Скажем, у меня есть следующий код, смоделированный в блокноте, поэтому извините за любые незначительные ошибки:)
//Default page
public ActionResult Index()
{
var musicViewModel
{
Albums = GetTopSellingAlbums(5),
Genres = GetTopGenres(5),
Artists = GetTopArtists(5)
};
return View(musicViewModel);
}
[HttpPost]
public ActionResult Index(MusicViewModel musicViewModel)
{
//For the example, pretend I have a class called musicStoreSubmission in my
//viewmodel which holds a few different fields the user fills out.
if(ModelState.IsValid)
{
//Do some actions based on the user submitting a form
}
//Else, refresh page with errors in Modelstate.
var musicViewModel
{
Albums = GetTopSellingAlbums(5),
Genres = GetTopGenres(5),
Artists = GetTopArtists(5)
};
return View(musicViewModel);
}
Мое беспокойство вызывает то, что для отправки любых ошибок с недопустимым ModelState мне нужно снова сгенерировать модель представления, чтобы можно было создавать любые элементы на странице, которые используют эти объекты (жанры, исполнители и т. Д.). Проблема в том, что мне нужно скопировать и вставить часть кода из ActionResult в ActionResult, что делает мой код не очень СУХИМЫМ.
Есть ли лучший способ избежать повторения подобного кода? На данный момент я просто перенес генерацию любых объектов по умолчанию, которые нужны модели представления, в отдельный метод и / или конструктор, но это немного запутанно, поскольку мне нужно сгенерировать все объекты, которые могут понадобиться для всего контроллера. Я надеялся, что смогу указать на свое второе действие индекса на первое действие индекса и просто использовать его как обычный метод. Я пробовал несколько разных способов сделать это, но не могу вернуть ActionResult в другой ActionResult.
Есть мысли?