我有一个表格(下面)张贴到umbraco表面控制器。
@using (Html.BeginUmbracoForm("AddToBasket", "Basket"))
{
<h1>@Model.productSelectionModel.Product.Title - @Model.productSelectionModel.Product.Price.ToString("C")</h1>
<ul>
@foreach (var productOption in Model.productSelectionModel.ProductOptions)
{
<li>@productOption.Option.Title</li>
@Html.DropDownList(productOption.Option.Id.ToString(), productOption.ValuesInOptions.ToSelectList(f => f.OptionValue.OptionValue1,
f => f.Id.ToString(),
"Select"));
}
</ul>
<input type="submit" value="Add To Basket">
}
当我查看为此表单呈现的HTML时,似乎添加了一个名为ufprt的隐藏字段。有人知道这是什么吗?它为什么被添加,我没有在任何地方使用它(我不认为我是)
有任何想法吗?
<input name='ufprt' type='hidden' value='6C01896EF3D5F430F9ED041DD2B0D31F89FA969A085C6F4FDEC3C9D4B906846E7AA80041CEA12573E9F58C1740893B770AAE3319FAA8FA35C89A54D301CFE31B85ADC0D3D9506D208DB068D1257C5F0D5F1B3B90FD59A5C2938EED0A2EB1168AD4573CD5D043D47A8F1AA789E988CC614686B89BE57D35DA8EAAA110044C393F' />
它是将表单路由到正确的控制器/操作方法(Umbraco能够通过该输入值而不是使用URL的典型MVC方法来路由表单)。我相信这对于表面控制器是特别的(即,它不适用于普通控制器,API控制器或RenderMvcController)。
另一个答案表明,它不是CSRF令牌。如果是,它可能会有一个名称为“__RequestVerificationToken”,如下所示:http://www.asp.net/web-api/overview/security/preventing-cross-site-request-forgery-%28csrf%29-attacks