目标是用户类型输入使用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}]"
答案 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));
});
}
}
});