在jquery post之后更新div显示而不在mvc3中重新加载页面

时间:2012-03-19 03:13:20

标签: javascript jquery ajax asp.net-mvc-3

什么是最好的每个人,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后立即显示已更新的labelbtnBoolbtnBool元素,而无需重新加载整个页面。在这种情况下,最好的方法是什么? 请发布您的代码建议,这对我来说将是一个很大的帮助! 提前谢谢!

2 个答案:

答案 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/