+
- зарезервированный символ в URL.Это означает пустое пространство.Поэтому для достижения того, что вы ищете, вы можете написать пользовательское связующее для модели:
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);
}
}
, а затем либо зарегистрировать его глобально для типа string[]
, либо использовать атрибут ModelBinder
:
public ActionResult MyActionName(
[ModelBinder(typeof(StringModelBinder))] string[] ids
)
{
return View(ids);
}
Очевидно, что если вы хотите использовать URL-адрес вида /MyControllerName/MyActionName/Id1+Id2+Id3+Id4
, который будет связывать последнюю часть в качестве параметра действия с именем ids
, вам придется изменить определение маршрута по умолчанию, которое использует {id}
.