C# 如何将字段(View1)的静态值传递给ASP.Net中(View2)的另一个字段

C# 如何将字段(View1)的静态值传递给ASP.Net中(View2)的另一个字段,c#,asp.net-mvc,C#,Asp.net Mvc,您好,您能帮助在另一个视图字段中发送字段的静态值吗 因此,当用户单击按钮时,它将直接进入页面 “我的视图”页的静态值 @using (Html.BeginForm()) { <div class="form-horizontal"> <h4>Customer</h4> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" })

您好,您能帮助在另一个视图字段中发送字段的静态值吗

因此,当用户单击按钮时,它将直接进入页面

“我的视图”页的静态值

@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>
 }
模型


当前,您的Pay action方法返回重定向结果,这基本上是一个302响应,它告诉浏览器对
Create
操作方法url进行新的HTTP GET调用。如果要传递一些数据,应该返回视图而不是此重定向结果,并将视图模型传递给视图方法调用

因此,替换

 return RedirectToAction("Create");

此外,如果只读取一个特性并将其指定给同一对象类型,则没有理由创建新对象

public ActionResult Pay(Payment apsp)
{
   return View("Create",apsp);
}
但从您的问题来看,您的第一个视图和第二个视图似乎是强类型的,对应于不同的视图模型。要使上述代码正常工作,这两个代码都应该强类型化为相同的视图模型(当您传递相同的
支付对象时

注意。可以通过ReidrectToAction方法调用传递(最小)数据。阅读下面的文章,了解更多关于实现这一目标的不同方法的信息


我假设您知道HttpPost和HttpGet是如何工作的

您可以通过以下方式传递viewmodel:

[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);
}

您要发送哪个字段?到哪个视图?您可以使用保存静态值的隐藏字段,将静态值作为表单操作url的一部分,甚至是在接收表单的控制器中。我已经对其进行了编辑,@misamidfroride您要发送的静态值。您需要将其保存在表单字段中,让您的操作方法读取并将其重新发送到下一个视图显示控制器的操作它将在创建视图中获取付款视图的值,对吗?创建控制器不需要任何代码?要检索Pay Controller的值?如果两个视图中的视图模型相同,则可以使用该方法。请参见答案中的更新。哇,非常感谢它工作正常,请注意:MVC(PRG模式)的标准是发布数据,如果有错误,请返回视图(),否则返回重定向结果。在这种情况下,我不建议返回视图,尤其是模型是“付款”。
 return RedirectToAction("Create");
return View("Create",pay);
public ActionResult Pay(Payment apsp)
{
   return View("Create",apsp);
}
[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);
}