我在我的一个项目中使用Boilerplatejs和asp.net mvc2。我在其中一个样板视图中有一个自动填充搜索框。我想将选定的“userId”(从搜索框的建议)发送到另一个模块的viewmodel,并使用“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);
};
});
我的问题是如何从其他模块的viewmodel中捕获此返回的userId?那么我就可以对Action方法进行ajax调用并检索必要的信息。有谁能够帮我?
答案 0 :(得分:2)
我认为你应该在这里使用URL控制器。一旦用户从搜索框中选择了特定的用户配置文件,您就可以让应用程序导航到用户的配置文件页面。类似的东西:
Boiler.UrlController.goTo("user/"+ user.id);
现在,您的用户个人资料组件应该收听
controller.addRoutes({
'user/{id}' : new UserComponent(context),
});
能够通过URL处理业务对象总是好的。这增强了书签和保持浏览器历史记录的能力。