2010-11-27 8 views
1

を使用してドロップダウン最初のリクエスト、リストはviewdataから更新され、ユーザーはリフレッシュを押してドロップダウンがajaxリクエストで作成されます。アップデートは、私は、ドロップダウンリストを更新しようとしていますAjax.ActionLink

両方のJSON結果を返そうとしましたが、ドロップダウンは更新されませんでした。 SelectListを返すとき、ドロップダウンは単にクリアされます。

このタスクをどのように達成できますか?

答えて

0

viewデータをもう一度更新するだけで、ビューは同じコードを使用して2番目のショット(Ajaxの戻り値)を更新できます。それに、Jsonを使う必要はありません。それがどうなるか教えてください。

1

あなたが部分的にダウン(Names.ascxを)このドロップを置くことができます:

あなたのメインビューの使用中
<%@ Control Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<YourApp.Models.SomeViewModel>" %> 
Names: <%: Html.DropDownList(x => x.SelectedName, Model.Names) %> 

そして、このエディタテンプレート:

<div class="editor-field"> 
    <span id="names"><% Html.RenderPartial("Names"); %></span> 
    <%: Ajax.ActionLink("Refresh", "Names", 
     new AjaxOptions { UpdateTargetId = "names", HttpMethod = "GET" }) %> 
</div> 

そして、あなたは行動を制御装置は、このようになります。 :

public ActionResult Names() 
{ 
    var model = new SomeViewModel 
    { 
     // TODO: fetch the names from db: 
     Names = new SelectList(new[] { 
      new { Id = "1", Text = "name 1" }, 
      new { Id = "2", Text = "name 2" }, 
      new { Id = "3", Text = "name 3" }, 
     }, "Id", "Text") 
    } 
    return View(model); 
} 
+0

これは素晴らしいおすすめです、最後の1つより良いダーリン:)あなたに投票しました:) –

関連する問題