Visar inlägg med etikett ASP.NET MVC. Visa alla inlägg
Visar inlägg med etikett ASP.NET MVC. Visa alla inlägg

onsdag 7 augusti 2013

Post Antiforgerytoken manually

When you use the helper @Html.AntiForgeryToken() in a view this is the actual HTML result:
<input name="__RequestVerificationToken" type="hidden" 
value="{ long cryptic code }">
This input field is normally inside your <form>-element which means it will be attached to the request if you submit that form.
The problem occurs when this input field is outside of your form or if you are not submitting a form. Have no fear, there is a solution for this. The attribute [ValidateAntiForgeryToken] tells the server to look for a key with the name: "__RequestVerificationToken". Let's give the server what it wants!
First, get that value!
var antiforgeytoken = $('input[name=__RequestVerificationToken]').val();
Second, attach it to your AJAX-request (I use jQuery)
$.ajax({
  url: 'something/something',
  type: 'POST',
  contentType: 'application/x-www-form-urlencoded; charset=UTF-8', // Default
  data: { 'somekey': 'someval', 
          '__RequestVerificationToken', antiforgeytoken }
});
Now your server is happy, and you are too!
Update:
The content type is important because of how the MVC Binder validates the request. If you want to use another content type this solution How can i supply an AntiForgeryToken when posting JSON data using $.ajax? proposes to separate the antiforgery token and the postdata in two different parameters.

tisdag 22 januari 2013

Installationsfil för ASP.NET-projektet

Jag har äntligen hittat en bra guide för att skapa ett "Web Setup"-projekt. Jag har envisats med att välja Visual Studios inbyggda lösning för att skapa ett installationspaket. Vad jag förstått finns det tredjepartsprogram som fungerar jättebra enligt utsagor, men jag har valt att inte sätta mig in i det. 

Geoffrey Vandiest presenterar en bra guide där han även tar med hur man kan köra "Custom Actions". Jag ville manipulera några filers innehåll beroende på vad användaren väljer under installationen. Detta går mycket bra att göra genom en vanlig klass om man importerar vissa .NET-klasser.