2013-12-05 5 views
0

Я пытаюсь создать ViewData, чтобы передать заголовок вновь созданного элемента с моего контроллера на представление. Какой был бы лучший способ сделать это? Любая помощь будет оценена по достоинству.ViewData вновь созданного элемента в MVC-контроллере

Ниже приведен пример моего контроллера Создание действия:

public ActionResult Create(Movie newMovie) { 

if (ModelState.IsValid) 
{ 
    db.AddToMovies(newMovie); 
    db.SaveChanges(); 

    return RedirectToAction("Index"); 
} 
else 
{ 
    return View(newMovie); 
} } 

ответ

1

Предполагая, что ваше Index действия с помощью Index.cshtml View, и ViewModel этого View является string, вы можете попробовать это:

if (ModelState.IsValid) 
{ 
    db.AddToMovies(newMovie); 
    db.SaveChanges(); 

    return View("Index", newMovie.Title); 
} 

С другой стороны, если ваш ViewModel не только название фильма, вы можете использовать ViewData для достижения того же результата:

if (ModelState.IsValid) 
{ 
    db.AddToMovies(newMovie); 
    db.SaveChanges(); 

    ViewData["MovieTitle"] = newMovie.Title; 

    return View("Index"); 
} 
1

Поскольку вы перенаправлении на другие действия, вам необходимо указать что-то передать в него, как это:

public ActionResult Index(string title) 
{ 
    //take the title and put it into your ViewBag or view model 
    ViewBag.NewTitle = title; 
    return View(); 
} 

Таким образом, в в вашем примере вы сделаете следующее, чтобы предоставить новый заголовок для действия индекса:

return RedirectToAction("Index", new { title = newMovie.title }); 

Тогда в вашей точке зрения вы можете сделать:

<h1>@ViewBag.NewTitle was created!</h1> 
+0

Спасибо за это. Что делать, если я не пытаюсь перенаправить действие и вместо этого хочу просто вернуть новый элемент? – nouptime

+1

Чтобы вернуть новый элемент без перенаправления, вам нужно будет сделать сообщение через javascript, используя ajax, а затем обработать возвращенное частичное представление (или Json) для обновления вашей страницы. Как правило, в вашем сценарии вы должны перенаправить на действие «Сведения», которое настроено на идентификацию, чтобы сделать выбор в отношении источника данных в фильме по идентификатору (или другому первичному ключу). Поэтому, когда пользователь нажимает «сохранить» или что у вас есть, они попадают на страницу, в которой отображаются детали только что созданного фильма. –

Смежные вопросы