POST提交表单在URL中显示值。它不应该隐藏它们吗?

时间:2011-10-18 13:30:21

标签: c# asp.net-mvc-3 http-post

当我使用HttpPost时,不应该在我的URL中隐藏表单值吗?

这是我用来生成付款确认页面的Razor代码:

@using (Html.BeginForm("Index", "Checkout", new { amount = Model.PackageCost, currency = "$", itemDescription = Model.PackageDescriptor, type = "digital" }, FormMethod.Post))
{    
    <input type="submit" value="Confirmar" class="btn primary frmsubmit" />
}

在我的HTML中,生成了这个:

<form action="/Checkout?amount=50&amp;currency=%24&amp;itemDescription=Paquete%20Gold50%20%7C%2050%24%20(59%20lances)&amp;type=digital" method="post">    
    <input type="submit" value="Confirmar" class="btn primary frmsubmit" />
</form>

当我点击确认按钮提交表单时,这是我要引导的网址:

http://localhost:5868/Checkout?amount=50&currency=%24&itemDescription=Paquete%20Gold50%20%7C%2050%24%20%2859%20lances%29&type=digital

那是什么给出的?如果值是POST表单,为什么不隐藏值?

1 个答案:

答案 0 :(得分:4)

因为那些不是表单值,而是路由值。表单值是<input >标记的值。

我假设您不需要任何路由值(省略第三个参数),而是创建具有适当默认值的<input ...>标记。如果普通用户不应该看到它们,请使用<input type="hidden">(这显然不是安全功能)。

您还应该使用反请求伪造令牌。