7 messaggi dal 18 settembre 2012
Questo è quello che hanno utilizzato in NopCommerce, è come la tua versione, ma un po' più approfondita. La inserisco perché penso può esservi utile.

public class FormValueRequiredAttribute : ActionMethodSelectorAttribute
{
private readonly string[] _submitButtonNames;
private readonly FormValueRequirement _requirement;

public FormValueRequiredAttribute(params string[] submitButtonNames):
this(FormValueRequirement.Equal, submitButtonNames)
{
}

public FormValueRequiredAttribute(FormValueRequirement requirement, params string[] submitButtonNames)
{
//at least one submit button should be found
this._submitButtonNames = submitButtonNames;
this._requirement = requirement;
}

public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
foreach (string buttonName in _submitButtonNames)
{
try
{
string value = "";
switch (this._requirement)
{
case FormValueRequirement.Equal:
{
//do not iterate because "Invalid request" exception can be thrown
value = controllerContext.HttpContext.Request.Form[buttonName];
}
break;
case FormValueRequirement.StartsWith:
{
foreach (var formValue in controllerContext.HttpContext.Request.Form.AllKeys)
{
if (formValue.StartsWith(buttonName, StringComparison.InvariantCultureIgnoreCase))
{
value = controllerContext.HttpContext.Request.Form[formValue];
break;
}
}
}
break;
}
if (!String.IsNullOrEmpty(value))
return true;
}
catch (Exception exc)
{
//try-catch to ensure that
Debug.WriteLine(exc.Message);
}
}
return false;
}
}

public enum FormValueRequirement
{
Equal,
StartsWith
}
1 messaggio dal 18 luglio 2012
fantastica trovata marco, ero alla ricerca di qualcosa di simile e non "anti pattern" con i soliti if e switch innestati. grazie mille!
Modificato da skier98 il 21 gennaio 2014 16.23 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.