2

在我的一个项目中使用Boilerplatejs和asp.net mvc2。我在其中一个样板视图中有一个自动完成的搜索框。我想将所选的“userId”(来自搜索框的建议)发送到另一个模块的视图模型,并使用该“userId”作为参数给我的控制器的操作方法发送ajax调用,然后获取一些特定的信息给该用户并最终在该特定模块的视图中显示它。如何在视图之间传递数据到另一个视图模型?

这里是我的自动完成脚本

$(document).ready(function() { 
    $('#name-list').autocomplete({ 
     source: function (request, response) { 
      $.ajax({ 
       url: "/Home/Searchuser", 
       data: { searchText: request.term, maxResults: 10 }, 
       dataType: "json", 
       success: function (data) { 

        response($.map(data, function (item) { 
         return { 
          value: item.DisplayName, 
          avatar: item.PicLocation, 
          rep: item.Reputation, 
          selectedId: item.UserUniqueid 
         }; 
        })) 
       } 
      }) 
     }, 
     select: function (event, ui) { 


      return selectedId; // **here im returning the required userId** 
     } 
    }).data("autocomplete")._renderItem = function (ul, item) { 
     var inner_html = '<a><div class="list_item_container"><div class="image"><img src="' + item.avatar + '"></div><div class="label"><h3> Reputation: ' + item.rep + '</h3></div><div class="description">' + item.label + '</div></div></a><hr/>'; 
     return $("<li></li>") 
       .data("item.autocomplete", item) 
       .append(inner_html) 
       .appendTo(ul); 
    }; 


}); 

我的问题是如何抓住这个返回用户id从另一模块的视图模型?那么我可以对Action方法进行ajax调用并检索必要的信息。有谁能够帮助我?

回答

2

我想你应该在这里使用URL控制器。一旦用户从搜索框中选择了特定的用户配置文件,您就可以使应用程序导航到用户的配置文件页面。喜欢的东西:

Boiler.UrlController.goTo("user/"+ user.id); 

现在,您的用户配置组件应该听

controller.addRoutes({ 
    'user/{id}' : new UserComponent(context), 
}); 

这是一件好事,能够通过URL来处理你的业务对象。这增强了书签和保持浏览器历史记录的能力。

相关问题