我的视图中有一个文本框,其中包含以下值:
“1、3、5、8”或
“1;3;5;8”。
是否可以将这些值作为整数数组映射到控制器方法?
[HttpPost]
public ActionResult AddUsers(int[] values)
{
...
}
我的视图中有一个文本框,其中包含以下值:
“1、3、5、8”或
“1;3;5;8”。
是否可以将这些值作为整数数组映射到控制器方法?
[HttpPost]
public ActionResult AddUsers(int[] values)
{
...
}
URL 应如下所示。在 JQuery 中,您可以根据 TextBox 值准备 URL。
http://abc.com/ControllerName/ActionName/?id=1&id=2
动作方法
[HttpPost]
public ActionResult Index(int[] id)
{
}
您可以创建自定义模型绑定器。添加一个类,说ArrayIntModelBinder
并实现IModelBinder接口:
public class ArrayIntModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (controllerContext == null)
throw new ArgumentNullException("controllerContext");
if (bindingContext == null)
throw new ArgumentNullException("bindingContext");
string values = bindingContext.ValueProvider.GetValue("values").AttemptedValue;
return Array.ConvertAll(values.Split(new[] { ',', ';' }), int.Parse);
}
}
在视图中,您有文本框:
@using (Html.BeginForm())
{
<input type="text" name="values"/>
<input type="submit" value="submit"/>
}
并将新模型绑定器应用于您的操作
[HttpPost]
public ActionResult AddUsers([ModelBinder(typeof(ArrayIntModelBinder))]int[] values)
{
...
}
或者您可以在Application_Start
.
当然,这个版本的模型绑定器非常简化,只是为了给你一个想法。您至少必须对输入字符串进行一些验证。希望这可以帮助。