Ecco una costante di classe che uso per richiamare alcuni aiutanti:Un argomento attributo deve essere un'espressione costante, typeof espressione o la creazione di matrice espressione di un tipo di parametro di attributo
public static class SecurityHelpers
{
public static string AntiforgeryTokenSalt = "tokenFooYouTolkienBladeRunner";
}
Ed ecco come invoco in uno dei le mie forme nella mia MVC3 applicazione web:
@using (Html.BeginForm("Index", "Checkout", FormMethod.Post))
{
<input type="hidden" name="amount" value="@Model.PackageCost"/>
<input type="hidden" name="currency" value="$"/>
<input type="hidden" name="itemdescription" value="@Model.PackageDescriptor"/>
<input type="hidden" name="type" value="digital"/>
@Html.AntiForgeryToken(App.WebUI.Helpers.SecurityHelpers.AntiforgeryTokenSalt)
<input type="submit" value="Confirmar" class="btn primary frmsubmit" />
}
e nel mio controller:
[HttpPost]
[ValidateAntiForgeryToken(Salt = SecurityHelpers.AntiforgeryTokenSalt)]
public ActionResult Index(decimal amount, string currency, string itemDescription, string type)
{
if (!User.Identity.IsAuthenticated) return RedirectToAction("LogOn", "Account");
}
L'errore è sparato nel mio Controller, si dice:
Un argomento attributo deve essere un'espressione costante, typeof espressione o la creazione matrice espressione di un tipo di parametro di attributo
Tutte le idee perché questo isn funziona? L'attributo Salt
del decoratore ValidateAntiForgeryToken è una stringa e la mia costante è anche una stringa, quindi sono confuso.