我正在寻找一种在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?
答案 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);
}