ASP.NET MVC 3中的更新面板

时间:2012-01-27 15:02:13

标签: c# asp.net-mvc asp.net-mvc-3 jquery

我正在寻找一种在ASP.NET MVC 3中执行“更新面板”的方法。我找到了这个链接:How to make update panel in ASP.NET MVC但是没有用。

所以,我在我看来这样做了:

<div>
    <input type="text" id="userName" />
    <button type="button" onclick="searchUserByName()">Search</button>
</div>
<div id="usersPanel">
    @{Html.RenderPartial("_UserList", Model);}
</div>
<script type="text/javascript">

    function searchUserByName() {
        var userName = $("#userName").val();

        $.post('@Url.Action("SearchUserByName")',
            {username: userName},
            function (htmlPartialView) {
                $("#usersPanel").html(htmlPartialView);
            }
        );
    }

</script>

在我的控制器中:

public ActionResult SearchUserByName(string userName)
{
    List<User> users = // code to search users by name

    return PartialView("_UserList", users);
}

但我不知道这是否是一种好的(或正确的)方式,或者如果有办法用asp.net mvc 3做这个。有更好的方法来做到这一点,或者用asp .net mvc 3?

3 个答案:

答案 0 :(得分:3)

只需使用ajax请求即可获取操作方法的结果。它基本上与asp.net中的更新面板相同。

如下所示。

$.ajax({
async: false,
cache: false,
type: 'POST',
    url: /controller/action,
    data: { id: idParam },
    beforeSend: function (XMLHttpRequest) {
        if (confirmMessage !== undefined) {
            return confirm(confirmMessage);
        }
        return true;
    },
    success: function (data) {
        // do stuff
    },
    error: function () {
        alert('An error occured');
    }
});

答案 1 :(得分:2)

我会这样做。

您可能还想查看客户端库以处理绑定等。看起来knockoutjs将包含在MVC4中

答案 2 :(得分:0)

在视图中:

<script type="text/javascript">

var userName = $("#userName").val();

 $.ajax({
            url: "/<ControolerName>/SearchUserByName",
            type: "POST",
            data: { userName: userName},
            success: function (result) {
                $('#divResults').html(result);
            },
            error: function (ex) {
                alert("Error");
            }

<script>
<div id="divResults">
</div>

在控制器中:

public PartialViewResult SearchUserByName(string userName)
{
     List<User> users = // code to search users by name

     return PartialView("_users", users);
}