0

是否可以在部分视图上显示 Jquery 自动完成的结果?这就是我现在的显示方式,我希望在局部视图上显示结果,以便我有更多的控制权来设置结果的样式。

 $(document).ready(function () {
        $('*[data-autocomplete-url]')
            .each(function () {
                $(this).autocomplete({
                    source: $(this).data("autocomplete-url"),
                    minLength: 2,
                    messages: {
                        noResults: "",
                        results: function () { }
                    },
                    select: function (event, ui) {
                        return false;
                    },
                });
            }).data("autocomplete")._renderItem = function (ul, item) {
                return $("<li></li>")
                    .data("item.autocomplete", item)
                  )
.append('<table><tr><td valign="top"><img style="width:30px;height:30px;" src="' + "/Images/Image.jpg" + '" /></td><td valign="top">' + item.FirstName + item.LastName + '</td></tr></table>')
                                       .appendTo(ul);
            }
    });

另外,当用户从结果中选择一个项目时,我想通过传递 id 来调用控制器操作,有人可以为此提供代码示例吗?

我正在使用 Asp.net MVC 4,

谢谢 !

4

1 回答 1

1

您不能仅使用 jQuery 呈现局部视图。但是,您可以调用一个方法(操作)来为您呈现局部视图并使用 jQuery/AJAX 将其添加到页面中。当用户选择一个项目或悬停一个项目时,只需使用 jquery 函数并使用 ajax 将 id 传递给服务器并返回 Parttail View。

$.get( '<%= Url.Action("details","user", new { id = Model.ID } %>', function(data) {
    $('#detailsDiv').replaceWith(data);
});

剃刀

$.get( '@Url.Action("details","user", new { id = Model.ID } )', function(data) {
    $('#detailsDiv').replaceWith(data);
}); 

其中用户控制器有一个名为 details 的操作,它执行以下操作:

public ActionResult Details( int id )
{
    var model = ...get user from db using id...

    return Partial( "UserDetails", model );
}

参考这些链接,你会得到一个更好的主意。 在 ASP.NET MVC 中使用 jQuery 渲染部分视图http://www.codeproject.com/Articles/41828/JQuery-AJAX-with-ASP-NET-MVC,ASP.NET MVC AJAX 与 jQuery

谢谢。希望这对您有所帮助。

于 2012-11-20T11:05:36.627 回答