我怎样才能让这个Json填满我在MVC中的下拉?

时间:2013-12-03 17:28:43

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

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

这是我的viewmodel     使用系统;     使用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}]"

1 个答案:

答案 0 :(得分: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));
                });
            }
        }
    });