您可以帮助在另一个视图字段中发送字段的静态值。
所以当用户点击按钮时,它将直接转到页面
我的静态值视图页
@using (Html.BeginForm())
{
<div class="form-horizontal">
<h4>Customer</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Price, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Price, new { htmlAttributes = new { @Value = "5", @readonly = "readonly", @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Price, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Pay" class="btn btn-default" />
</div>
</div>
</div>
}
到这个视图
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<div class="form-group">
@Html.LabelFor(model => model.Payment.Amount, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Payment.Amount, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Payment.Amount, "", new { @class = "text-danger" })
</div>
</div>
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
控制器1
public ActionResult Pay(Payment apsp)
{
decimal amount = apsp.Amount;
Payment pay = new Payment
{
Amount = amount
};
return RedirectToAction("Create");
}
模型
public decimal Amount{ get; set; }
答案 0 :(得分:0)
目前,您的Pay操作方法返回一个RedirectResult,它基本上是一个 302 响应,它告诉浏览器对Create
操作方法url进行新的HTTP GET调用。如果要传递一些数据,则应返回视图而不是此重定向结果,并将视图模型传递给View方法调用。
所以替换
return RedirectToAction("Create");
带
return View("Create",pay);
如果您只是读取一个属性并将其分配给相同的对象类型,也没有理由创建新对象。
public ActionResult Pay(Payment apsp)
{
return View("Create",apsp);
}
但是根据您的问题,看起来您的第一个视图和第二个视图是强类型的不同视图模型。要使上述代码起作用,两者都应该强类型化为相同的视图模型(因为您传递的是Payment
的相同对象)
请注意。可以通过ReidrectToAction方法调用传递(最小)数据。阅读以下帖子,了解有关实现这一目标的不同方法的更多信息。
答案 1 :(得分:0)
我假设你知道HttpPost和HttpGet是如何工作的。
您可以通过TempData传递您的视图模型,如下所示:
[HttpGet]
public ActionResult Pay()
{
return View(new Payment());
}
[HttpPost]
public ActionResult Pay(Payment payment)
{
TempData["Payment"] = payment;
return RedirectToAction("Create");
}
[HttpGet]
public ActionResult Create()
{
if (TempData["Payment"] == null) throw new Exception("Error");
var payment = TempData["Payment"] as Payment;
return View(payment);
}