如何将查询字符串中的List <int>传递给MVC4中的控制器操作</int>

时间:2013-12-19 05:44:14

标签: c# asp.net-mvc list collections query-string

在C#中,我的课程中有三个对象,如:

public class ABC{
public int AgeMin{get;set;}
public int AgeMax{get;set;}
public List<int> MaritalStatuses{get;set;}
}

现在当我通过接收ABC类型对象的查询字符串将所有这些对象值传递给控制器​​的操作时,我这样传递:

&AgeMin=@Model.filter.AgeMin&AgeMax=@Model.filter.AgeMax&MaritalStatuses=@string.Join(",", @Model.filter.MaritalStatuses)

AgeMin和AgeMax的值是正确的,但List MaritalStatuses的值不正确,因为它是List。如何将此List值传递给查询字符串?

2 个答案:

答案 0 :(得分:0)

将MaritalStatuses更改为MaritalStatuses [0],MaritalStatuses [1]等

答案 1 :(得分:0)

现在不能测试它但是如果你在模型类中编写一个函数来返回正确的查询字符串,或者可能有一个模型包装器甚至一些扩展方法获取模型对象并返回查询字符串,你可以有更好的控制为了它。像这样:

public class TestModel
{
    public int AgeMin { get; set; }
    public int AgeMax { get; set; }
    public List<int> MaritalStatuses { get; set; }

    public string ToQueryString()
    {
        return string.Format("AgeMin={0}&AgeMax={1}&MaritialStatuses={2}", 
                            AgeMin, AgeMax, string.Join(",", MaritalStatuses));
    }
}

然后像这样使用它:

<a href="@Url.Action("someAction")?@(Model.ToQueryString())">Testing</a>