在我的脚本中恢复json结果时重定向到不同的操作

时间:2016-06-23 12:40:07

标签: json asp.net-mvc

我正在获取列表视图json结果,我想重定向到不同的视图并根据我的json显示结果 (我希望我清楚)这就是我所做的

<script type="text/javascript">
   $(document).ready(function () {
       $("#term").autocomplete({
           source: function (request, response) {
               $.ajax({
                   url: "Home/GetSubjectsName",
                   data: "{'term': '" + request.term + "' }",
                   dataType: 'json',
                   type: "POST",
                   contentType: "application/json; charset=utf-8",
                   dataFilter: function (data) { return data; },
                   success: function (data) {
                       response($.map(data, function (item) {
                           return {
                               label: item.value,
                               value: item.value,
                               id: item.id,
                           }
                           var url = '@Url.Action("bla", "blaaaa")';
                       }))
                   }
               });
           },
           minLength: 2,
       });
   });

我的jsonlook喜欢这样:

 public JsonResult GetSubjectsName(string term)
    {
        var results = db.subjects.Where(s => term == null ||
        s.SubjectName.ToLower().Contains(term.ToLower())).Select(x => new
        { id = x.SubjectId, value = x.SubjectName }).Distinct().ToList();
        return Json(results, JsonRequestBehavior.AllowGet);

    }

我要显示结果的动作是(而不是部分视图)

public ActionResult bla(字符串术语)         {             IEnumerable serach =来自db.subjects.Where中的sub(t =&gt; t.SubjectName.Contains(term))。Distinct()                                                          选择新的SearchResultsViewModel                                                          {

                                                         Created = sub.Created,
                                                         Gender = sub.Gender,
                                                         OccupationDecription = sub.OccupationDecription,
                                                         Image = sub.Image,
                                                         SubjectName = sub.SubjectName
                                                     };


        ViewBag.term = term;

        return RedirectToAction("bla", "home", serach.ToList());
    }

我的观点:

@model IEnumerable<MyProJect.ViewModels.SearchResultsViewModel>

foreach ....

我需要的是转到不同的操作并显示数据

1 个答案:

答案 0 :(得分:0)

这里有一些可能有用的代码。你的帖子仍然有点不清楚,所以我根据你所描述的内容填写缺失的部分。我没有尝试过设计表单布局。

主页/ Index.cshtml:

@using( Html.BeginForm("bla") ) {
     @Html.LabelFor(model => model.term)
     @Html.EditorFor(model => model.term)
     <button type="submit">Submit</button>
}

<script type="text/javascript">
jQuery(function ($) {
    $("#term").autocomplete({ source: '@Url.Action("GetSubjectsName")', autoFocus: true, minLength: 2 });

});
</script>

您的自动填充功能应更改为:

public JsonResult GetSubjectsName(string term)
{
    return Json(db.subjects
     .Where(s => term == null ||
         s.SubjectName.ToLower()
        .Contains(term.ToLower()))
     .OrderBy(x => x.SubjectName)
     .Select(x => x.SubjectName)
     .Distinct(), JsonRequestBehavior.AllowGet);
}

据我所知,其他一切都应按预期工作。