ユーザーが詳細を入力するフォームがあります。私はここにCouponsControllerリダイレクトユーザーがフォームを送信した後、ビューに<Data>を表示します。
の作成方法 [HttpPost]
public ActionResult Create(CouponViewModel viewModel)
{
if (!ModelState.IsValid)
{
var model = new CouponViewModel
{
Students = _context.Students.ToList()
};
return View("Index", model);
}
for (int i = 1; i <= viewModel.NumberOfCoupons; i++)
{
var coupon = new Coupon
{
CouponNumber = viewModel.CouponNumber,
ValidationCode = viewModel.ValidationCode(6),
Price = viewModel.Price,
StudentId = viewModel.Student,
DateTime = Convert.ToDateTime(DateTime.Now.ToString("yy-MMM-dd ddd"))
};
_context.Coupons.Add(coupon);
_context.SaveChanges();
}
var coupons = _context.Coupons
.Where(c => c.StudentId == viewModel.Student)
.Include(s => s.Student)
.ToList();
TempData["viewModel"] = coupons;
return RedirectToAction("GetCoupons");
}
を視野に、私は私のようなのためにstuckedされているビュー
[HttpPost]
public ActionResult GetCoupons()
{
Coupon coupon = TempData["viewModel"] as Coupon;
return View("Print", (IEnumerable<Coupon>)coupon);
}
に表示するTempDataをを受け取るビューがあるリダイレクト
@using (Html.BeginForm("Create","Coupons"))
{
<div class="row">
<div class="col-sm-8">
<div class="page-header">Generer Coupon</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
@Html.AntiForgeryToken()
<div class="form-group">
@Html.LabelFor(m => m.Student)
@Html.DropDownListFor(m => m.Student, new SelectList(Model.Students, "Id", "Name"), "", new { @class = "form-control input-lg" })
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
@Html.AntiForgeryToken()
<div class="form-group">
@Html.LabelFor(m => m.Price)
@Html.TextBoxFor(m => m.Price, new { @class = "form-control input-lg" })
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
@Html.AntiForgeryToken()
<div class="form-group">
@Html.LabelFor(m => m.NumberOfCoupons)
@Html.TextBoxFor(m => m.NumberOfCoupons, new {@class = "form-control input-lg"})
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<button class="btn btn-success btn-lg">Generer</button>
</div>
</div>
}
3日。私はどこが間違っているのか分かりません
正確に何をしていますか? 'GetCoupons()'は '[HttpGet]'でなければなりません。あなたはidだけを渡し、リダイレクトされたアクションでルックアップを行うことを検討するかもしれません。あなたはそのように 'TempData'を避けることができます。コレクションを単一の 'Coupon'にキャストしています。 – Jasen
"コレクションを単一のクーポンにキャストしています" ...キャストしないようにしましたが、その方法はわかりません。 IDを渡す方法? –
私はプロジェクトを実行すると、 "リソース/クーポン/ Getcouponsが見つかりません"と表示されます –