0
我有一個調用get操作方法與查詢字符串參數列表傳遞給該方法。其中一些參數有一個管道'|'在他們中。問題是我無法在其中使用管道字符的操作方法參數。如何將管道查詢字符串參數映射到非管道C#參數?或者還有其他一些我不知道的技巧嗎?MVC操作方法和查詢字符串參數管道
我有一個調用get操作方法與查詢字符串參數列表傳遞給該方法。其中一些參數有一個管道'|'在他們中。問題是我無法在其中使用管道字符的操作方法參數。如何將管道查詢字符串參數映射到非管道C#參數?或者還有其他一些我不知道的技巧嗎?MVC操作方法和查詢字符串參數管道
您可以編寫自定義模型聯編程序。例如,讓我們假設你有以下要求:
/foo/bar?foos=foo1|foo2|foo3&bar=baz
,你要綁定這個請求以下行動:
public ActionResult SomeAction(string[] foos, string bar)
{
...
}
所有你所要做的就是寫一個自定義的模型綁定:
public class PipeSeparatedValuesModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var values = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (values == null)
{
return Enumerable.Empty<string>();
}
return values.AttemptedValue.Split('|');
}
}
然後:
public ActionResult SomeAction(
[ModelBinder(typeof(PipeSeparatedValuesModelBinder))] string[] foos,
string bar
)
{
...
}