c# - 将查询字符串参数附加到对象 URL 的最佳方法

标签 c# asp.net-core asp.net-core-5.0

我有查询字符串类。

  public class PagingModel
    {
        public int PageNumber { get; set; } = 1;
       
        public string Filter { get; set; } = "text";
    }

string url = "Menu/GetMenus";

我必须使用基于 ASP.NET Core 5 预览中的对象的查询字符串生成 URI。是否有任何内置的查询助手?

要求的输出:

/Menu/GetMenus?PageNumber=3&Filter=text

MVC Controller :

 public async Task<IActionResult> index_partial([FromQuery] PagingModel paging)
            {
              
                var data = await _apiService.GetMenusAsync(paging);
    
                return PartialView("_IndexPartial", data);
            }

服务:

   public async Task<PagedList<MenuModel>> GetMenusAsync(PagingModel paging)
            {
                string Requiredurl = "Menu/GetMenus?page="+ paging.PageNumber;
               
            }

最佳答案

我得到了这个扩展方法。不需要手动生成查询字符串。我们只需要传递类对象。我以为其他人可以使用同样的东西......

public static string AppendObjectToQueryString(string uri, object requestObject)
        {
            var type = requestObject.GetType();
            var data = type.GetProperties(BindingFlags.Public | BindingFlags.Instance)
                .ToDictionary
                (
                    p => p.Name,
                    p => p.GetValue(requestObject)
                );

            foreach (var d in data)
            {
                if (d.Value == null)
                {
                    continue;
                }

                if ((d.Value as string == null) && d.Value is IEnumerable enumerable)
                {
                    foreach (var value in enumerable)
                    {
                        uri = QueryHelpers.AddQueryString(uri, d.Key, value.ToString());
                    }
                }
                else
                {
                    uri = QueryHelpers.AddQueryString(uri, d.Key, d.Value.ToString());
                }
            }

            return uri;
        }

例如:在我的例子中,我是这样调用的。

string uri = "Menu/GetMenus";
 string full_uri = QueryStringExtension.AppendObjectToQueryString(uri, paging);

关于c# - 将查询字符串参数附加到对象 URL 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61819215/

相关文章:

c# - ASP.NET Core 5.0 RouteDataRequestCultureProvider 删除 url 中的默认文化

c# - asp.net core linux - CultureInfo获取国家代码

c# - 是否可以获取 ILogger 的当前 LogLevel?

c# - 使用 OpenXML SDK 将包含注释的幻灯片从一个 PowerPoint 演示文稿复制到另一个演示文稿

c# - 如何在 Selenium Webdriver 中处理 shadow dom

c# - 如何从同一个解决方案中读取另一个项目的配置值?

c# - Wix CustomAction [C#] session.Message 在安装过程中不显示

c# - 作为单个 HTTP 请求的一部分执行顺序 MediatR 命令/查询的最佳实践?

javascript - Jqueryvalidate 的 .validate() 方法在 ASP Core 中不执行

c# - 如何使用我自己的自定义设计来自定义 swagger UI