如何从http POST的视图中提取用户输入的文本数据

本文关键字:提取 用户 输入 数据 文本 视图 http POST | 更新日期: 2023-09-27 18:25:40

我已经为返回视图的CheckoutController编写了一个基本的GET方法,该视图将有文本框供我的用户输入付款信息和促销代码。如何在POST方法中访问这些数据?

 // GET: Checkout
    public ActionResult PaymentsAndPromotions()
    {
        return View();
    }
    [HttpPost]
    public ActionResult PaymentsAndPromotions()
    {
        var order = new Order();
        try
        {
            if (db.Promotions !== PromoCode)
            {
                return View(order);
            }
            else
            {
                //save the order
                db.Orders.Add(order);
                db.SaveChanges();
                //process the order
                var cart = ShoppingCart.GetCart(this.HttpContext);
                cart.CreateOrder(order);
                return RedirectToAction("Complete", new object{id = order.OrderID});
            }
        }
        catch 
        {
            //invalid - redisplay with error
            return View(order);
        }
    }

查看代码:

<form>
Payment Method:<br /><br />
Credit Card #: <br />
<input type="text" name="CreditCardNum" /><br />
Credit Card Type: <br />
<input type="text" name="CreditCardType" /><br/>
Promo Code: <br />
<input type="text" name="PromoCode"/> <br />

如何从http POST的视图中提取用户输入的文本数据

我建议您创建一个类似这样的模型:

public class Order
{
    public string CreditCardNum { get;set; }
    public string CreditCardType { get;set; }
    public string PromoCode { get;set; }
}

从你的控制器,这样做:

public ActionResult PaymentsAndPromotions()
{
    var order = new Order();
    return View(order);
}
[HttpPost]
public ActionResult PaymentsAndPromotions(Order order)
{
    //you can get all your order's property here. 
    //example:
    if (order.CreditCardNum != "test123")
    {
    }
    return View(order);
}

在你看来,你可以这样做(假设你使用的是剃刀语法):

@model Models.Order
@using (Html.BeginForm())
{
    @Html.TextBoxFor(m => m.CreditCardNum)
    @Html.TextBoxFor(m => m.CreditCardType)
    @Html.TextBoxFor(m => m.PromoCode)
    <input type="submit" value="Submit"/>
}

adirks95,在控制器中,您可以使用以下代码获取表单数据:Request.Form["CreditCardNum"]。如果您还有任何问题,请告诉我。