2013-10-29 2 views

답변

3

:

보기

@Html.TextBox("playerName") 

<script type="text/javascript"> 

    $(function() { 

     $('#playerName').typeahead({ 
      name: 'players', 
      valueKey: 'playerName' 
      prefetch: '@Url.Action("AvaliablePlayers", "Player")', 
      limit: 10 
     }); 

    }); 

</script> 

컨트롤러와 액션을

public class PlayerController : Controller 
{  
    public JsonResult AvaliablePlayers(int groupId) 
    { 
     var group = _groupRepository.GetById(groupId); 


     return Json(group.Players.Select(p => new { playerId = p.PlayerID, playerName = p.Name), JsonRequestBehavior.AllowGet); 
    } 
} 

그리고 ASP.NET WebForms에서 사용자 정의 HTTP 처리기를 사용하여 JSON 형식의 데이터를 반환 할 수 있습니다. 이 :

을 Default.aspx는

<asp:TextBox id="country" CssClass="countryTypeAhead" runat="server"></asp:TextBox> 

<script type="text/javascript"> 

    $(function() { 

     $('.countryTypeAhead').typeahead({ 
      name: 'countries', 
      prefetch: '<%= Page.ResolveClientUrl("~/Countries.ashx") %>', 
      limit: 10 
     }); 

    }); 

</script> 

프로젝트에 새 Generic Handler (.ashx)이라는 나라를 추가합니다. 여기 핸들러의 코드 숨김은 다음과 같습니다

public class Countries : IHttpHandler 
    { 
     public void ProcessRequest(HttpContext context) 
     { 
      context.Response.ContentType = "application/json"; 

      var cntries = new List<string>() {"Slovenia", "Italy", "Germany", "Austria"}; 

      JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); 

      context.Response.Write(jsSerializer.Serialize(cntries)); 

     } 

     public bool IsReusable 
     { 
      get 
      { 
       return false; 
      } 
     } 
    } 

이 샘플은 위의 ASP.NET 3.5에서 사용할 수 JavaScriptSerializer를 사용합니다. 연인 버전이 3.5 이상인 asp.net을 사용하는 경우 JSON.NET을 사용하여 선행 결과를 JSON 형식으로 변환 할 수 있습니다.

+0

ashx 아이디어를 주셔서 감사합니다. – MaxPayne

+0

Default.aspx에 "prefetch :"로 시작하는 줄에 큰 따옴표가 없습니다. – brainbolt