c# 表单集合值到 Int 列表

标签 c# regex asp.net-mvc-4 formatting formcollection

我的 C# MVC4 应用程序中有一个表单集合。在此集合的 index[0] 中,有一个字符串的格式始终如 "10=on&13=on&15=on";唯一的区别是字符串中 #=on 的数量。

我想从这个字符串中提取每个数字并将它们添加到一个整数列表中。这样做最简单的方法是什么?是否需要正则表达式?

最佳答案

What would be the simplest method of doing this?

我会使用自定义模型 Binder :

public class MyModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var request = controllerContext.RequestContext.HttpContext.Request.Params;
        var keys =
            from key in request.Keys.Cast<string>()
            where request[key] == "on"
            select key;
        var onValues = new List<int>();
        foreach (var key in keys)
        {
            int value;
            if (int.TryParse(key, out value))
            {
                onValues.Add(value);
            }
        }

        return onValues.ToArray();
    }
}

然后是这样的 Controller 操作:

public ActionResult SomeAction([ModelBinder(typeof(MyModelBinder))]int[] values)
{
    return View();
}

现在您可以简单地将以下请求发送到此 Controller 操作,自定义模型绑定(bind)器将完成这项工作:

/SomeAction?10=on&13=on&15=on

Is Regex required?

不不不不不不。

关于c# 表单集合值到 Int 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16003937/

相关文章:

asp.net-mvc-4 - 通过单击 MVC 4 应用程序中的登录按钮重定向到 Azure Active Directory

c# - 回发后隐藏的表单字段未出现在 MVC 模型中

c# - C#中字符串的快速哈希函数

c# - 将私钥导出为字节数组的最佳方式

c# - 从 Unity 项目进行 REST 调用

java - Java程序中的正则表达式查询

c# - Silverlight 内阴影文本

c# - 匹配未由 & 和 ; 包围的文本

arrays - 如何使用 REGEX 按相同的符号序列拆分字符串?

javascript - 如果用户单击浏览器取消按钮,隐藏加载 gif 的最佳方法是什么?