什么是最好的每个人,MVC3新手在这里!请看看这些:
在我的视图页面中,我有:
<div id = "AccounStatusDiv" class="display-field">
@Html.DisplayFor(m => m.AccountStatus)
<input id="btnBool" type="button" class="btnGrid ActStatBtn" value="@(Model.AccountStatus ? "Deactivate" : "Activate")" onclick="ChangeStatus()"/>
</div>
和一个脚本:
<script type="text/javascript">
function ChangeStatus() {
$.post('@Url.Action("SetAccountStatus", "User")',
{ UserName: "@(Model.UserName)",
accountStatus: "@(Model.AccountStatus)" });
// change the display of the AccounStatusDiv elements, or maybe just reload the div element if possible. is it?
}
</script>
在我的展示模板中,我有:
<div id = "AccountStatusDiv" style="display:inline-block;">
<img src="@Html.Custom().ResolveImage((bool)Model ? imgPositive : imgNegative)" alt="@Model" />
<label> @ResourceManager.Localize(resource, display)</label>
</div>
在控制器中:
public ActionResult SetAccountStatus(string userName, bool accountStatus)
{
SecurityManager.GetMembershipProvider().SetStatus(userName, !accountStatus);
return AjaxResult.JsonRedirect("/User/ViewUser?username=" + userName);
}
只有在我重新加载页面后才会显示结果。
我想在点击img
后立即显示已更新的label
,btnBool
和btnBool
元素,而无需重新加载整个页面。在这种情况下,最好的方法是什么?
请发布您的代码建议,这对我来说将是一个很大的帮助!
提前谢谢!
答案 0 :(得分:3)
您只使用$.post()
向服务器发送数据(请求)。 AJAX可以是双重的:发送请求,并接收相应的响应。在您的代码中,您没有收到数据(或者,至少,做出必要的安排以便您这样做)。
如果SetAccountStatus
的{{1}}操作设置为返回某些数据(可能通过UserController
或类似数据),您可以修改return Json()
来电以接收它,并让您的Javascript使用回调函数做出相应的反应。
$.post()
答案 1 :(得分:1)
这是事件点击按钮而没有刷新页面
$("#btnBool").click(function(e){
e.preventDefault();
//to do your code, you can use `$.ajax` to request and get response from server
$.ajax({
url: '@Url.Action("SetAccountStatus", "User")',
type:"GET",
dataType: 'json',
data: { UserName: "@(Model.UserName)",accountStatus: "@(Model.AccountStatus)" },
async:'true',
success:function (data) {
alert(data);
//success to parsing json if you data type of your response is json
}
});
}
您可以使用Web服务发送请求并从服务器获取响应,并请求,从服务器获取响应,您可以在jquery中使用$.ajax()
http://api.jquery.com/jQuery.ajax/