【问题标题】:How can i get this Json to Fill my dropdown in MVC?如何让这个 Json 填充 MVC 中的下拉列表?
【发布时间】:2013-12-19 21:38:06
【问题描述】:

目标是用户类型输入一个 id,该 id 使用 StringFormat 进行处理。然后与数据库比较,返回结果返回所有匹配项。所以我将它以 JSON 格式返回。我想提取名字和姓氏并在下拉菜单中填写该信息

这是我的视图模型 使用系统; 使用 System.Collections.Generic; 使用 System.Linq; 使用 System.Web;

namespace eFilingNoticeRetrieval.Models
{
    public class efViewModel
{
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string efdcp_Random { get; set; }
    public int fk_efd_ID { get; set; } 


    }
}

这是我的控制器

[HttpPost]
    public JsonResult Details(string searchTerm)
    {
        string searchTerm1 = StringFormat(searchTerm); // Takes the random off

        var model =
            from e in _db.eFiling_Document_CourtProcessed
            join item in _db.eQueue_Party on e.fk_efd_ID equals item.fk_efd_ID
            where (e.efdcp_UniqueServiceID == searchTerm1)
            select new efViewModel
            {
                first_name = item.efp_FirstName,
                last_name = item.efp_LastName,
                efdcp_Random = e.efdcp_Random,
                fk_efd_ID = item.fk_efd_ID
            };
        JsonResult result = new JsonResult();
        result.Data=JsonConvert.SerializeObject(model.ToList());

            return result;
    }

这是我的看法

<input type="text" name="searchTerm" id="searchTerm" onchange="getting()" />


<select  id="drops"/>

function getting()
{

    var searchTerm = $('#searchTerm').val();

    $.ajax({
        url: '@Url.Action("Details", "Home")',
            type: "POST",
          data: { searchTerm: searchTerm },

           beforeSend: function () { },
           success: function (searchTerm)
            {
               $($.parseJSON(searchTerm)).map(function () {
                   return $('<option>').val(this.value).text(this.label);
               }).appendTo('#drops');

            }

        });

这是我的归来

"[{\"first_name\":\"JIM\",\"last_name\":\"JOHNSON\",\"efdcp_Random\":\"BQONIZ\",\"fk_efd_ID\":771},{\"first_name\":\"JIM\",\"last_name\":\"JOHNSON\",\"efdcp_Random\":\"ELWKHE\",\"fk_efd_ID\":771},{\"first_name\":\"JIM\",\"last_name\":\"JOHNSON\",\"efdcp_Random\":\"ARVYTN\",\"fk_efd_ID\":771},{\"first_name\":\"NICK\",\"last_name\":\"NICHOLSON\",\"efdcp_Random\":\"BQONIZ\",\"fk_efd_ID\":771},{\"first_name\":\"NICK\",\"last_name\":\"NICHOLSON\",\"efdcp_Random\":\"ELWKHE\",\"fk_efd_ID\":771},{\"first_name\":\"NICK\",\"last_name\":\"NICHOLSON\",\"efdcp_Random\":\"ARVYTN\",\"fk_efd_ID\":771}]"

【问题讨论】:

    标签: c# jquery asp.net-mvc json


    【解决方案1】:

    我会重新考虑这一点

    为您的控制器而不是

    JsonResult result = new JsonResult();
    result.Data=JsonConvert.SerializeObject(model.ToList());
    

    试试

    return Json(model.ToList(), JsonRequestBehavior.AllowGet);
    

    为您的 jquery 尝试

        $.ajax({
            url: '@Url.Action("Details", "Home")',
                type: "POST",
                data: { searchTerm: searchTerm },
                beforeSend: function () { },
                success: function (searchTerm) {
                    if (searchTerm) {
                        var $drops = $('#drops');
                        for (var i = 0; i < searchTerm.length; i++) {
                            $drops.append($('<option value="'+searchTerm[i].fk_efd_ID +'">'+searchTerm[i].first_name + " " + searchTerm[i].last_name +'</option>'));
                        }
                    }                  
                }
            });
    

    编辑

    这更干净What is the best way to add options to a select from an array with jQuery?

        $.ajax({
            url: '@Url.Action("Details", "Home")',
            type: "POST",
            data: { searchTerm: searchTerm },
            beforeSend: function () { },
            success: function (searchTerm) {
                if (searchTerm) {
                    $.each(searchTerm, function (key, value) {
                        $('#drops')
                             .append($('<option>', { value: value.fk_efd_ID })
                             .text(first_name + " " + last_name));
                    });
                }
            }
        });
    

    【讨论】:

    • 如果这是正确的,请将我的答案标记为正确答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2021-04-04
    • 1970-01-01
    相关资源
    最近更新 更多