【问题标题】:DropDownListFor without a List type没有 List 类型的 DropDownListFor
【发布时间】:2020-02-12 19:30:23
【问题描述】:

我目前正在使用 Salesforce API 基本上从 Salesforce 中提取数据并将其推回。

在这一节中,我需要提取数据并对其进行反序列化,以便对它进行模型访问。

模型中的这个特定属性,称为主题,不是列表类型,因为它们没有多个,但是有来自不同对象的多个主题进入,这就是我想放在下拉列表中的内容。

我该怎么办?

我的服务中的 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();

【问题讨论】:

  • 有哪些科目,从哪里获得?
  • 有很多,比如“呼叫”、“电子邮件”、“文本”、等等等等,它们来自 Salesforce 选项列表值,但我想将它们带入我的网站,以便基本上使用他们
  • 你能发布你的模型吗?
  • 更新的帖子,应该在那里看到。

标签: c# .net api model-view-controller salesforce


【解决方案1】:

编辑:已解决

可能只是问题的措辞有误,但我做到了。

我的 HomeController 中的 Index 操作必须有这个方法 -> 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;
 }

【讨论】:

    猜你喜欢
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 2021-06-24
    • 2021-07-06
    • 2021-02-17
    • 2018-09-11
    • 1970-01-01
    相关资源
    最近更新 更多