2014-01-30 3 views
0

У меня есть следующая сценария, в которой у меня есть одна модель (с именем Модель A) в представлении (View1).Два частичных представления внутри MVC-представления

Этот вид первоначально загружает частичный вид (частичный вид 1)

На нажатие кнопки частичного зрения, я пытаюсь передать идентификатор генерируется в другой частичный вид (Partial View 2).

Но я получаю сообщение , в котором говорится, что «Вид 1» не найден, который загружается без каких-либо проблем при первом запуске.

Если я удаляю инструкцию else, страница успешно перезагружается после отправки.

Любые советы по успешному прохождению этого объекта модели в другом виде. Я положил id = 1 и протестировал его, и произошла ошибка. Я попытался RenderAction, RenderPartial и все это не удалось

Page

@model MyModel 

    @{ 

     if (ViewBag.Created ==0) { 
      @Html.Partial("CreateView1",Model); 
     } 
     else 
     { 
      { Html.Action("Action2", "Area/Controller2", new { id = Model.Id }); } 

     } 
    } 

методы контроллера:

Controller 1: запись точка зрения

[Route("{CreateView1}")] 
    public ActionResult Create() { 
     ViewBag.Created = 0; 
     return View(new MyModel()); 
    } 

    [Route("{CreateView1}")] 
    [HttpPost] 
    public ActionResult Create(MyModel model) { 
    ........................... 
    ViewBag.Created = 1; 

    } 

контроллер 2, который оказывает 2-й частичный вид:

public PartialViewResult Index(int createdId) 
     { 
      return PartialView(new List<Model2>()); 
     } 

ответ

3

Что касается View 1 cannot be found, потому что ключевое слово return в вашем втором Create действии отсутствует. Щелчок кнопки отправляет форму методу Create с атрибутом [HttpPost] и в конце метода ему нужен обратный вид.

Reg Any tips on passing this model object successfully to the other view please, The return во втором Create метод должен быть return View(model);, а не «вернуться View (новый MyModel);` а позже в представлении вы собираетесь использовать модель.

Re I put id=1 and tested it and the same error occured., потому что время выполнения никогда не достигает этой точки, поскольку операция передается «[HttpPost] Create», и она никогда не возвращается к вашей исходной странице.

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

Простое решение:

1- использование следующих return в конце вас [HttpPost] Создать Действие:

return RedirectToAction("Action2", "Area/Controller2", new { id = model.Id}); 

2- замените следующий код в исходной странице

if (ViewBag.Created ==0) { 
      @Html.Partial("CreateView1",Model); 
    } 
else 
{ 
    { Html.Action("Action2", "Area/Controller2", new { id = Model.Id }); } 
} 

со следующим:

@Html.Partial("CreateView1",Model); 

и удалять в любом месте вы установите ViewBag.Created = 0 или ViewBag.Created =1


Я также предполагаю, действие action2 в контроллере Controller2 возвращает действительный частичный вид.

Надеюсь, что эта помощь поможет вам исправить свой код.

+0

Фактически у меня был (возврат с моделью), и я пропустил его в скопировании в блок кода. Я не совсем понял ваш ответ RedirectToAction («Action2», «Area/Controller2», new {id = model.Id}); потому что я хочу отобразить ту же страницу с новым представлением, которое должно отображаться при условии. Разве это не перенаправление на действие, верните меня на другую страницу? –

0

Вы можете опустили это для краткости, но вы хотите, чтобы вернуть ViewResult в конце Вашего почтового действия:

return View(new MyModel()); 
0

попробовать это:

if (ViewBag.Created ==0) { 
     @Html.RenderPartial("CreateView1",Model); 
    } 
Смежные вопросы