Как привязать оставшиеся параметры запроса к словарю в ASP. NET Core - PullRequest
1 голос
/ 26 марта 2020

Я использую привязку модели для основного приложения ASP. NET, для него настроено несколько известных атрибутов, а затем словарь, в который я хочу добавить любые дополнительные атрибуты URL. Я хочу, чтобы моя строка запроса выглядела следующим образом:

/foobar?Id=5&Status=pending&SpecialKey=test

И чтобы она заполнила мою модель, где было свойство Id = 5, Status = Pending, и чтобы в Словаре с именем ExtraParams был один элемент, ключ " SpecialKey "и значение" test ".

Вот моя модель сейчас:

using Microsoft.AspNetCore.Http;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text.Json.Serialization;

namespace MyProject.Models
{
    public class MyCustomModel
    {
        public string? Id { get; set; }
        public string? Status { get; set; }
        public string? SerialNumber { get; set; }
        public string? Nickname { get; set; }
        public string? DisplayName { get; set; }

        [JsonExtensionData]
        public Dictionary<string, object> ExtraParams { get; set; } = new Dictionary<string, JToken>();
    }
}

В нынешнем виде заполняется только Id / Status. Единственный способ получить что-либо в ExtraParams - это использовать строку запроса в формате ExtraParams[key]=test, которая мне не нужна.

1 Ответ

1 голос
/ 27 марта 2020

Один из способов - заполнить все параметры в словаре на вашем сервере, используя этот пример кода:

Dictionary<string, string> parameters = HttpContext.Current.Request.QueryString.Keys.Cast<string>()
            .ToDictionary(k => k, v => HttpContext.Current.Request.QueryString[v]);

или даже , этот может быть полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...