2011-04-13 76 views
1

我有一个显示正确数据的jQuery自动选择框。现在我想在选择一个项目时触发一个ASP.NET MVC 3控制器。控制器应该重定向到一个View。这里是我的jQuery自动完成代码(我敢肯定有些东西被省略第二个Ajax调用,但我还没有找到它):从jQuery自动完成选择中触发控制器操作

<script type="text/javascript"> 
    $(function() { 
     $("#Client").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        url: 'Entity/GetClientAutoComplete', type: 'POST', dataType: 'json', 
        data: { query: request.term }, 
        success: function (data) { 
         response($.map(data, function (item) { 
          return { label: item, value: item }; 
         })) 
        } 
       }) 
      }, 
      minLength: 1, 
      select: function (event, ui) { 
       $.ajax({ 
        url: 'Entity/GetApplicationsByName/' + ui.item.value, type: 'POST' 
       }) 
      } 
     }); 
    }); 
    </script> 

这里就是我试图调用控制器:

public ActionResult GetApplicationsByName(string id) 
     { 
      ViewBag.Client = id; 
      var apps = _service.GetDashboardByName(id); 
      return View("Dashboard", apps.ToList()); 
     } 

当我看到Firebug中的Ajax调用触发器时,我看到了正确的URL配置,但没有发生任何其他事情。它的行为好像它想要加载某些东西而不是发送一些东西。我很困惑。感谢您的任何指导。

回答

1

那么你发送了一个idPOSTGetApplicationsByName控制器,并且控制器正在发回视图。

如果你想重定向,您可以使用以下命令:

select: function (event, ui) { 
    window.location.href = 'Entity/GetApplicationsByName/' + ui.item.value; 
} 
+0

好极了!是的,附近有人告诉我,我不想进行Ajax调用,而应该更像是表单文章。但是,您的建议可能会为我节省更多打字量。我测试了它,并按预期发送了ViewBag参考。现在我需要弄清楚为什么存储库没有返回数据,但这是另一个问题。 – ewomack 2011-04-13 22:15:06