【问题标题】:How to pass List<int> in query string to a controller's action in MVC4如何将查询字符串中的 List<int> 传递给 MVC4 中的控制器操作
【发布时间】:2013-12-19 05:44:13
【问题描述】:

在 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。如何将此列表值传递给查询字符串?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      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>
      

      【讨论】:

        猜你喜欢
        • 2019-07-02
        • 1970-01-01
        • 2013-06-13
        • 1970-01-01
        • 2010-10-23
        • 1970-01-01
        • 2013-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多