2012-01-27 26 views
3

ASP.NET MVC 3で「更新パネル」を実行する方法をお探しです。このリンク:How to make update panel in ASP.NET MVCが見つかりませんでした。ASP.NET MVC 3のアップデートパネル

<div> 
    <input type="text" id="userName" /> 
    <button type="button" onclick="searchUserByName()">Search</button> 
</div> 
<div id="usersPanel"> 
    @{Html.RenderPartial("_UserList", Model);} 
</div> 
<script type="text/javascript"> 

    function searchUserByName() { 
     var userName = $("#userName").val(); 

     $.post('@Url.Action("SearchUserByName")', 
      {username: userName}, 
      function (htmlPartialView) { 
       $("#usersPanel").html(htmlPartialView); 
      } 
     ); 
    } 

</script> 

そして、私のコントローラで:

だから、私は、私の見解ではこれをしなかった

public ActionResult SearchUserByName(string userName) 
{ 
    List<User> users = // code to search users by name 

    return PartialView("_UserList", users); 
} 

しかし、それを行うには良い(あるいは右)の方法である場合、私は知りません、またはasp.net mvc 3.これを行う方法がある場合、これを行うには、またはasp.net mvc 3で行うより良い方法がありますか?

+0

。毎回usersPanelにすべてのユーザーを再追加するのはちょっとばかげているようだ。 –

答えて

3

に含まれることになるよう

あなたはまた、などのバインディングを処理するためのクライアント側のライブラリを見てみたいかもしれませんが見えます。基本的にasp.netの更新パネルと同じことをします。

以下のようになります。ビューで

$.ajax({ 
async: false, 
cache: false, 
type: 'POST', 
    url: /controller/action, 
    data: { id: idParam }, 
    beforeSend: function (XMLHttpRequest) { 
     if (confirmMessage !== undefined) { 
      return confirm(confirmMessage); 
     } 
     return true; 
    }, 
    success: function (data) { 
     // do stuff 
    }, 
    error: function() { 
     alert('An error occured'); 
    } 
}); 
2

私はそれを好きです。 knockoutjsはちょうどあなたのアクションメソッドから結果を得るために、AJAX要求を使用しMVC4

+0

サーバー側で作業を続けるために、jqueryを正しく使用していますか?このlibはUIだけです。言い換えれば、$ .postまたは$ .ajaxの結果を得て、knockoutjsで定義されたモデルを表示するように設定しますか?なぜなら、これはUIのみで動作するので、必要なものを完全には扱っていないのですが、すばらしいlibのように見えます。とにかく、あなたを襲う! –

+0

はい。あなたはまだajaxを行うためにjQueryを使用します。しかしknockoutjsはあなたのページの複数の場所に同じ情報をバインドすることができます。 – jgauffin

0

<script type="text/javascript"> 

var userName = $("#userName").val(); 

$.ajax({ 
      url: "/<ControolerName>/SearchUserByName", 
      type: "POST", 
      data: { userName: userName}, 
      success: function (result) { 
       $('#divResults').html(result); 
      }, 
      error: function (ex) { 
       alert("Error"); 
      } 

<script> 
<div id="divResults"> 
</div> 

コントローラで:私は代わりに、リスト項目のw/JSONを返すだろう除き、私はそのようにそれを行うだろう

public PartialViewResult SearchUserByName(string userName) 
{ 
    List<User> users = // code to search users by name 

    return PartialView("_users", users); 
} 
+0

質問に記載されているコードを書き換えることは別として、あなたの答えは何ですか? –