C# 提交后表单在URL中显示值。不应该';它不是在隐藏它们吗?

C# 提交后表单在URL中显示值。不应该';它不是在隐藏它们吗?,c#,asp.net-mvc-3,http-post,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

当我使用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" />
}

那么是什么原因呢?如果是POST表单,为什么不隐藏这些值?

因为这些不是表单值,而是路由值。表单值是
标记的值

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


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

是,除了那些不是表单值。可能的解决方案?创建一个带有值的表单,并使用CSS隐藏它们?
可用于向post表单添加额外的不可见字段。但很明显,恶意用户仍然可以读取和操纵它们。
<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