2010-11-27 3 views
1

Я пытаюсь обновить выпадающий список:Update падение вниз с помощью Ajax.ActionLink

Вид:

<div class="editor-field"> 
       Names: <%: Html.DropDownList("names", (SelectList)ViewData["Names"]) %> 
       <%:Ajax.ActionLink("Refresh", "GetNames", new AjaxOptions { UpdateTargetId = "names", HttpMethod = "GET" })%> 
</div> 

Контроллер:

[HttpGet] 
    public ActionResult GetNames() 
    { 
     List<String> names = this.GenerateNames(); 

     return Json(new SelectList(names)); 
    } 

Поток состоит в следующем: когда пользователь делает первый запрос, список обновляется из viewdata, затем пользователь нажимает refresh, а выпадающий - заполняется usin ajax-запросом.

Я попытался вернуть оба результата JSON - выпадающий список не обновляется. При возврате SelectList выпадающее меню просто очищается.

Как я могу выполнить эту задачу?

ответ

0

Просто обновите viewdata снова, чтобы представление могло использовать тот же код, чтобы обновить себя для второго снимка, являющегося возвратом 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

Это хорошая рекомендация, лучше, чем последняя, ​​хороший дарин :), проголосовали за вас :) – 2010-11-29 01:10:22

Смежные вопросы