0

我的视图中有一个文本框,其中包含以下值:

“1、3、5、8”或

“1;3;5;8”。

是否可以将这些值作为整数数组映射到控制器方法?

[HttpPost]
public ActionResult AddUsers(int[] values)
{
    ...
}
4

2 回答 2

0

URL 应如下所示。在 JQuery 中,您可以根据 TextBox 值准备 URL。

http://abc.com/ControllerName/ActionName/?id=1&id=2

动作方法

[HttpPost]
public ActionResult Index(int[] id)
{
}
于 2013-03-29T13:42:25.500 回答
0

您可以创建自定义模型绑定器。添加一个类,说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.

当然,这个版本的模型绑定器非常简化,只是为了给你一个想法。您至少必须对输入字符串进行一些验证。希望这可以帮助。

于 2013-03-29T14:12:00.510 回答