【问题标题】:Binding Querystring parameters in MVC在 MVC 中绑定查询字符串参数
【发布时间】:2015-11-19 18:19:19
【问题描述】:

是否有一种等效的方法可以将 MVC 控制器中的查询字符串参数绑定到 FromUri,它似乎只在 MVC API 中使用?

我有 2 个页面,可以有 0 到 7 个查询字符串参数,具体取决于用户选择的过滤器。我试图找到一种干净有效的方法来管理来自控制器的查询字符串参数,而无需一堆 if 语句。每个页面的参数基本相同,因此创建一个两个页面都可以访问的 queryParameter 类是理想的。

在 API 控制器中真的很容易,我想做类似的事情。

任何想法都将不胜感激。

谢谢,

朗达

编辑。

假设我有以下课程:

public class QueryStringParams : IEnumerable
{
    public string Page { get; set; }
    public string Top { get; set; }
    public string Color { get; set; }
    public string Size { get; set; }
    public string Width { get; set; }
    public string Price { get; set; }
    public IEnumerator GetEnumerator()
    {
        yield return this.Page;
        yield return this.Top;
        yield return this.Color;
        yield return this.Size;
        yield return this.Width;
        yield return this.Price;
    }
}

在我的控制器中,我想要这样的东西:

公共异步任务索引(string pathAlias, [Bind(Prefix = "QueryStringParams")]QueryStringParams queryParams)

类似于能够在 API 方法中执行此操作。

公共异步任务获取(字符串 pathAlias,[FromUri]QueryStringParams queryParams)

然后引用查询字符串参数,例如: var pageNumber = queryParams.Page;

查询字符串看起来像这样:

http://localhost:12330/br/womens-dresses-shop?page=2&Top=10&color=red

它可能会或可能不会在任何时候设置所有参数。

这样更清楚吗?

【问题讨论】:

  • 查询字符串参数的模型绑定自动发生在 asp.net MVC 中。您需要更清楚自己想要实现的目标。
  • 让我们首先向我们展示您的控制器操作是什么样的,以及您正在使用的查询字符串。
  • 我更新了原始帖子,包括一些代码 sn-ps 和对我正在尝试做的更好的描述。
  • @Rhonda - 目前还不清楚您打算用查询字符串参数做什么。您当前的课程可以作为视图模型正常工作(请参阅 Filipe Oriani 提供的链接)。所以你有一个类中的值。怎么办?看来应该够了。

标签: asp.net-mvc query-string


【解决方案1】:

虽然不是 100% 理想,但这似乎可行。

公共异步任务索引(string pathAlias, [Bind(Include = "Page, Color")]BrowseQueryParams queryParams)

朗达

【讨论】:

  • 如果我想访问所有参数,我可以这样做: public async Task Index(string pathAlias, BrowseQueryParams queryParams) 我认为这是有人试图在其中一个 cmets 中说的。我试图把事情复杂化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多