У меня есть страница контактов, и на этой странице должна быть либо форма, либо сообщение об успешном завершении, либо сообщение об ошибке, поэтому в основном это выглядит примерно так:
@model MyApp.Models.ContactData
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div>
...Some static content...
If page was opened the first time
-> Render a form here
Else If form was posted and data successfully processed
-> Render a success message here
Else If form was posted but error occurred during processing
-> Render a failure message here
...Some static content...
</div>
Я не знаю, как лучше всегодобиться этого с помощью MVC 3. Создаю ли я три совершенно отдельных представления (чего я бы хотел избежать из-за статического содержимого, которое было бы одинаковым для всех трех представлений)?Или я мог бы создать три частичных представления и затем решить, основываясь на дополнительном флаге, который я мог бы поместить в класс модели, какой частичный вид будет отображаться?Или я могу как-то динамически внедрить частичные представления из контроллера в представление?
Контроллер, который у меня есть, выглядит так:
public class ContactController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(ContactData contactData)
{
if (ModelState.IsValid)
{
ContactService service = new ContactService();
bool result = service.Process(contactData);
return ?; // What do I return now? It must somehow depend on result.
}
else
return View(contactData));
}
}
У меня была похожая страница и поведение с ASP.NET WebForms и решение были в том, чтобы поместить три переменных блока разметки в элементы управления asp:Panel
, а затем включить или отключить флаг Visible
этих панелей из-за кода.Я думаю, мне нужен совсем другой подход с ASP.NET MVC для достижения той же цели.
Какой самый лучший способ?
Спасибо за предложения заранее!