+
è un simbolo riservato in un URL. Significa spazio bianco. Quindi, per ottenere ciò che si sta cercando si potrebbe scrivere un modello personalizzato legante:
public class StringModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (value != null && !string.IsNullOrEmpty(value.AttemptedValue))
{
return value.AttemptedValue.Split(' ');
}
return base.BindModel(controllerContext, bindingContext);
}
}
e poi o registrarlo a livello globale per il tipo string[]
o utilizzare l'attributo ModelBinder
:
public ActionResult MyActionName(
[ModelBinder(typeof(StringModelBinder))] string[] ids
)
{
return View(ids);
}
Ovviamente se si vuole per utilizzare un url del modulo /MyControllerName/MyActionName/Id1+Id2+Id3+Id4
che vincolerà l'ultima parte come parametro di azione denominato ids
, sarà necessario modificare la definizione di instradamento predefinita che utilizza {id}
.
fonte
2011-12-24 16:39:00
In realtà ho bisogno: 'code'public ActionResult MyActionName (int [] id) { Return (IDS); } 'codice' –