У меня есть один контроллер с 2 действиями.Правильный способ построения приложения MVC
Первое действие с использованием Entity Framework для получения списка запросов из базы данных, а затем представление отображает их.
public class HomeController : Controller
{
public ActionResult HelpRequests()
{
using (var context = new MyDbContext())
{
var items = context.Requests.ToList();
return View(items);
}
}
}
Зрение:
@model List<Request>
@foreach (var request in Model)
{
<tr>
<td>
@Html.DisplayFor(model => request.Id)
</td>
<td>
@Html.DisplayFor(model => request.Title)
</td>
<td>
@Html.DisplayFor(model => request.Message)
</td>
<td>
@Html.DisplayFor(mode => request.CreateDate)
</td>
<td>@Html.ActionLink("Reply", "SendResponse", new { id = request.Id })</td>
</tr>
}
И, наконец, модель для запроса является
public partial class Request
{
public int Id { get; set; }
public string Title { get; set; }
public string Message { get; set; }
public System.DateTime CreateDate { get; set; }
public Nullable<bool> Responded { get; set; }
}
Если посмотреть на выходе вида кода I ссылки, которая будет принимать пользователь Главная/SendResponse/id
Здесь моя неопределенность входит.
Целью действия SendResponse является ответ на конкретный запрос. В представлении SendResponse я хотел бы показать некоторые поля модели запроса, чтобы автор знал, что включить в ответ.
Мои конкретные вопросы
Потому что я хочу, чтобы отобразить некоторые данные из модели запроса, модель для представления будет установлен в модели запроса, но цель представления будет посылать ответ (который определен в модели ответа). Так что я должен просто установить некоторые свойства ViewBag. *, Которые установлены в полях в классе запроса, и использовать их вместо модели запроса, а затем настроить мою модель представления на ответ?
Как хорошо/лучше всего иметь один контроллер для работы с двумя моделями (в этом случае запросы и ответы)?
Короче говоря, я просто не 100% уверен в том, как структурировать комбинацию MVC, которая принимает данные от одной модели, а затем создает новую модель, основанную на этих данных.
В действии контроллера SendResponse вы можете получить данные Запроса для предоставленного id из db. Вы можете создать еще один класс модели, который может обернуть данные запроса из db и любые дополнительные данные, которые вы хотите отобразить в представлении SendResponse. –
Всегда можно создать индивидуальный класс модели на основе данных, которые вы хотите отобразить на экране. –
Лучше установить другую модель представления, которая обертывает обе модели, из-за представлений допускает только механизм привязки одной модели. Созданная модель просмотра может быть настроена так, чтобы содержать определенную часть данных, которые вы хотите передать. –