Мой основной вид использует
@model IEnumerable<Ortund.Models.Reward>
Я пытаюсь позволить пользователю делать несколько вещей в этом представлении, не уходя от него.
В частности, я хочу, чтобы пользователь мог делать следующее:
- Просмотр вознаграждений, которые он/она уже получил (вознаграждения, которые этот пользователь имеет право использовать)
- Получите новую квитанцию и при этом добавьте награду, связанную с этой квитанцией, к своим текущим наградам.
- Использовать часть вознаграждений, на которые он/она имеет право, или все сразу
Для этого я использую частичные представления, так как могу установить новую модель для каждого частичного представления.
Это выглядит примерно так:
/Главная/Индекс
if (Request.Cookies["Ortund"] == null)
{
// render a login form
}
else
{
<p>@String.Format("Welcome, {0}!", Convert.ToString(Request.Cookies["Ortund"]["username"])) <a id="claim-link">Claim New</a> | <a id="redeem-link">Redeem</a></p>
@Html.Partial("_RewardsView")
<!-- Render the new claim and redemption views as well -->
<div class="claim-new">
@Html.Partial("_ClaimsView")
</div>
<div class="redemption">
@Html.Partial("_RedemptionView")
</div>
_RewardsView
@model IEnumerable<Ortund.Models.Reward>
....
_ClaimsView
@model Ortund.Models.Receipt
....
_RedemptionView
@model IEnumerable<Ortund.Models.Reward>
....
Я понимаю, что модели представления являются предпочтительным подходом, но, поскольку я еще не понял, как правильно их использовать, я использую этот подход.
Я сделал это в другом проекте, но на этот раз я получаю сообщение об ошибке, говорящее о том, что время словаря, требуемое для представления, отличается от предоставленного (в этом конкретном случае мы получаем путаницу между квитанциями и вознаграждениями) .
Я не совсем уверен, что с этим делать, кроме как создавать формы вручную без привязки к моделям, а скорее отправлять их правильному контроллеру...