DropDownListFor без типа списка - PullRequest
       0

DropDownListFor без типа списка

1 голос
/ 12 февраля 2020

В настоящее время я работаю с Salesforce API, чтобы получить данные из Salesforce и вернуть их sh.

Есть один раздел, в котором мне нужно извлечь данные и десериализовать их, чтобы у меня был доступ к модели.

Это определенное свойство в модели, называемое Subject, не относится к списку типов. потому что их не много, НО есть несколько Субъектов из разных объектов, и это то, что я хочу добавить в выпадающий список.

Как бы я go об этом?

Мой метод GetAllEvents () в моих службах.

        public async Task<SFEventModel> GetAllEvents()
        {
            HttpClient queryClient = new HttpClient();
            var tm = await GetToken();
            List<SelectListItem> events = new List<SelectListItem>();

            string restQuery = tm.ServiceUrl + "/services/data/v25.0/query?q=SELECT+Subject+from+Event";

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, restQuery);


            // Adding the token to the header 
            request.Headers.Add("Authorization", "Bearer " + tm.AccessToken);
            // Return JSON to the caller
            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            //Call Endpoint Async
            HttpResponseMessage response = await queryClient.SendAsync(request);

            string responseString = await response.Content.ReadAsStringAsync();
            var model = JsonConvert.DeserializeObject<SFEventModel>(responseString);

            return model;
        }

Моя нерешительная попытка поместить эти входящие объекты в список

    <div class="text-center">
        <div>
            @Html.LabelFor(x => Model.Subject)
            <div class="col-md-5">
                @Html.DropDownListFor(x => Model.Subject, new SelectList(Model.Subject))
            </div>
        </div>
    </div>

Я собираюсь отфильтровать все остальные свойства, поскольку они не имеют контекста к этому вопросу и Есть много свойств. У меня есть данные, извлекаемые правильно из этой модели в моем контроллере для фактического извлечения «PicklistValues», но проблема в том, что он считается типом.

public partial class Field 
{
[JsonProperty("picklistValues")
public PicklistValue[] PicklistValues { get; set; }
}

Частичный класс PicklistValue в модели ->

public partial class PicklistValue
        {
            [JsonProperty("active")]
            public bool Active { get; set; }

            [JsonProperty("defaultValue")]
            public bool DefaultValue { get; set; }

            [JsonProperty("label")]
            public string Label { get; set; }

            [JsonProperty("validFor")]
            public object ValidFor { get; set; }

            [JsonProperty("value")]
            public string Value { get; set; }
        }

метод в контроллере для получения этих значений, поступающих из вызова API.

var allEvents = await _api.GetAllEvents();
var subjectList = allEvents.Fields.Where(x => x.Name == "Subject").Select(x => x.PicklistValues).FirstOrDefault();

1 Ответ

0 голосов
/ 14 февраля 2020

РЕДАКТИРОВАТЬ: РЕШЕНО

Возможно, только что сформулировал вопрос неправильно, но я сделал это.

Мое действие Index в моем HomeController должно было иметь этот метод -> ViewData["Picklist1"] = new SelectLit(await GetSubject(), "Value", "Label")

, и мое мнение должно было иметь это <select asp-items="ViewBag.Picklist1"> </select>

для любопытного, моего GetSubject Метод был адаптирован к тому, что Salesforce API ужасен.

private async Task<List<PicklistValue>> GetSubject()
 {
    var allEvents = await _api.GetAllEvents();
    var subjectList = allEvents.Fields.Where(x => x.Name == "Subject").Select(x => 
           x.PicklistValues).FirstOrDefault().ToList();

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