我们的网络应用中有一个Razor表单。在与客户会面时,我们了解到此表单中的一个字段应接受以下输入:
例如,最终用户可能会输入45,50-53,65
来表示数字列表45,50,51,52,53,65。我假设文本框也可能包含任意空格。被忽略(所以45, 50-53, 65
代表相同的信息)。
如何使用Razor在MVC 4中设置这样的文本框?特别是,
答案 0 :(得分:1)
对于2,您可以在模型中执行以下操作:
public string Numbers { get; set; }
public int[] ParsedNumbers
{
get
{
Func<int[], int[]> arrayToRange = (range) =>
{
if (range.Length == 1) return range;
int[] ret = new int[range[1] - range[0] + 1];
for (int i = 0; i < ret.Length; i++)
{
ret[i] = i + range[0];
}
return ret;
};
return this.Numbers
.Replace(" ", "")
.Split(',')
.SelectMany(n => arrayToRange(n.Split('-')
.Select(n2 => int.Parse(n2)).ToArray())).ToArray();
}
}
对于4,您可以使用此RegEx:
^(\d(\-\d)?(, ?)?)*$