+
jest zarezerwowanym symbolem w adresie URL. Oznacza to białą przestrzeń. Tak, aby osiągnąć to, czego szukasz można napisać niestandardowy modelu Spoiwo:
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);
}
}
a następnie albo zarejestrować go globalnie dla typu string[]
lub użyć atrybutu ModelBinder
:
public ActionResult MyActionName(
[ModelBinder(typeof(StringModelBinder))] string[] ids
)
{
return View(ids);
}
Oczywiście jeśli chcesz aby użyć adresu URL formularza /MyControllerName/MyActionName/Id1+Id2+Id3+Id4
, który będzie wiązał ostatnią część jako parametr działania o nazwie ids
, będziesz musiał zmodyfikować domyślną definicję trasy, która używa {id}
.
Właściwie potrzeba: 'code'public ActionResult MyActionName (int [] ID) { powrót widzenia (ID); } 'code' –