如何使用Post方法和ViewBag在视图中传递数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Post方法和ViewBag在视图中传递数据?相关的知识,希望对你有一定的参考价值。

第一个视图发送表单

foreach p in Model
<form method="post">
 <td class="pricelight"><input type="radio" name="price"value="@p.PriceLight.ToString("")"/>@p.PriceLight.ToString("")</td>
        <td class="fromtabletime"><input type="radio" name="price"value="@p.PriceOk.ToString("")/>@p.PriceOk.ToString("")</td>
        <td class="totable"><input type="radio" name="price"value="@p.PriceHigh.ToString("")/>@p.PriceHigh.ToString("")</td>
         <td class="button13"><button type="submit" asp-action="Buy" asp-route-id="@p.PhoneId" asp-controller="Home">Next</button></td>
</form>

然后我需要在postController中处理数据。

       [HttpPost]
        public ActionResult Buy(int?id,Order order,string price,@p.PriceLight,@p.PriceOk,@p.PriceHigh)
        
            string ryt=price;
             ViewBag.price=ryt;
            context.Orders.Add(order);

            context.SaveChanges();
            ViewBag.phoneId=id;
            return View("Thanks, " + order.OrderName);


        

然后我想在新的视图中得到它

@using System.Linq;
@using System;


@model List<Searchphone>



@
    ViewBag.Title = "PhoneId";



<h2 class="orderinformation">Order Data</h2>
<form method="post" class="formpass">
       <h3> <input type="hidden" name="@ViewBag.price" value="@ViewBag.price" />@ViewBag.price</h3>
    <br>
    <input type="hidden" id="PhoneId"value="@ViewBag.PhoneId" name="PhoneId">
    <label for="OrderSurName">Surname</label><br>
    <input type="text" placeholder="Enter Surname" name="OrderSurName" required><br>

    <label for="OrderName">Имя</label><br>
    <input type="text" placeholder="Enter Name" name="OrderName" required><br>
    <button type="submit" class="button7">To pay</button>

</form>

1) 我不能在视图中得到它,只能在URL中得到它。2) 我想在post方法中把价格值与第一个视图中的@p.PriceLight进行比较,但我如何在方法中传递@p.PriceLight?但我如何在方法中传递@p.PriceLight?

答案

1) 我不能在视图中得到它,只能在URL中得到它。我如何使用Post方法在视图中得到它,为什么不能使用viewbag?

你应该首先调试检查ViewBag在你的控制器动作中是否有一个值。因为ViewBag是用在隐藏输入中的,所以在页面上不能直接看到,你可以在你的视图中按f12来检查ViewBag是否被渲染。我用了你的代码,可以在视图中得到。

2) 我想在post方法中把价格值与第一个视图中的@p.PriceLight进行比较。但我如何在方法中传递@p.PriceLight?

表单只提交选中的单选按钮的值,如果你想获得PriceLight的值,在表单的第一个视图中定义一个隐藏字段。

以上是关于如何使用Post方法和ViewBag在视图中传递数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用从视图到控制器的 ViewBag 在 SQL Db 中存储多个复选框选择?

带有 viewbag 的 MVC 数据集

为啥 viewbag 值不传递回视图?

MVC 将 ViewBag 传递给控制器

将数据从控制器传递到视图

编辑 NEW 使用 HttpPost 将数据从控制器传递到视图