【发布时间】:2015-08-19 03:37:09
【问题描述】:
我的主视图使用
@model IEnumerable<Ortund.Models.Reward>
我试图让用户在这个视图上做几件事而不必离开。
具体来说,我希望用户能够执行以下操作:
- 查看他/她已领取的奖励(此用户有资格兑换的奖励)
- 索取新收据,然后将与该收据关联的奖励添加到他/她当前的奖励中
- 兑换他/她有资格获得的部分奖励,或一次性兑换全部奖励
我使用局部视图来实现这一点,因为我可以为每个局部视图设置一个新模型。
看起来像这样:
/Home/Index
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>
....
我知道视图模型是首选方法,但由于我还没有弄清楚如何正确使用视图模型,所以我将采用这种方法。
我已经在另一个项目中这样做了,但是这次我收到一个错误,指出视图所需的字典时间与提供的不同(在这种特定情况下,我们在 Receipts 之间感到困惑和奖励)。
除了手动构建与模型没有关联的表单外,我不确定该怎么做,而是发布到正确的控制器...
【问题讨论】:
标签: asp.net-mvc