Ho un'azione che sto postando da jQuery:Ottenere i valori dei parametri di azione all'interno di un filtro azione
[HttpPost]
public void UpdateGroupName(int groupId, string name)
{
authorisationRepository.UpdateGroupName(groupId, name);
}
Questo funziona bene con il groupId
e name
. Ho alcune altre azioni di gruppo, quindi vorrei utilizzare un attributo di autorizzazione per assicurarmi che la persona che esegue la modifica abbia il permesso di apportare la modifica.
ho già un AuthorizationAttribute
che recupera il groupId
con successo su richieste GET accedendo filterContext.HttpContext.Request.Params["groupId"]
, ma quando si tratta di POST non funziona. Request.Form
è vuoto e lo è anche Request.Params
.
Ecco il codice che ho nel mio attributo autorizzazione:
public int groupId { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
username = httpContext.User.Identity.Name.Split('\\').Last();
// awesome permissions checking goes here...
return authorized;
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
groupId = int.Parse(filterContext.HttpContext.Request.Params["groupId"]); // this line throws an exception
base.OnAuthorization(filterContext);
}
Ho guardato questo answer ma la mia proprietà Form
è vuoto :(
aggiornata per mostrare messaggio jquery:
var serverComm = {
post: function (url, data) {
return $.ajax({
url: url,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(data)
});
},
get: function (url, data) {
return $.ajax({
url: url,
type: 'GET',
cache: false,
contentType: 'application/json; charset=utf-8',
data: data
});
}
};
// some awesome code later...
serverComm.post(editGroupNameUrl, { groupId: group.id, name: newName })
E il parametro è come parametro Form? C'è una possibilità che si trovi su QueryString? – ivowiblo
QueryString è vuoto. E cosa intendi "è come parametro Form"? Puoi vedere la mia azione nell'esempio di codice in alto – soniiic
potresti pubblicare il codice del modulo? – ivowiblo