2012-03-22 7 views
2

次のコードは、1ビュー、1つの部分図、1コントローラを示す呼び出します。このビューには、現在の時間を取得するボタンと、その時間を表示する部分的なビューが含まれています。 jQuery経由でボタンをクリックすると、部分ビューのコンテナに$ .load()が呼び出されます。jQuery.load()は一度だけサーバ(不再バインド号)

ボタンの最初のクリックは完全に機能しますが、後続のコールはサーバーに到達しません。関数が起動し、負荷が発生しますが、サーバーは要求を受け取ることはありません。

どのような問題が発生する可能性がありますか?

Index.cshtml

@{ 
    Layout = null; 
} 
<!DOCTYPE html> 
<html> 
<head> 
    <title>ContainerView</title> 
    <script src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $('#btnRefresh').click(function() { 
       $("#divTime").load('@Url.Action("GetTime")'); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <div> 
     <input id="btnRefresh" type="button" value="Get Time"/> 
     <div id="divTime"> 
      @Html.Partial("_Time") 
     </div> 
    </div> 
</body> 
</html> 

_Time.cshtml

@ViewData["Time"] 

ContainerController.cs

using System; 
using System.Web.Mvc; 

namespace PartialViewAjaxFormModel.Controllers 
{ 
    public class ContainerController : Controller 
    { 
     // 
     // GET: /Container/ 

     public ActionResult Index() 
     { 
      return View(); 
     } 

     public PartialViewResult GetTime() 
     { 
      ViewData["Time"] = DateTime.Now.ToLongTimeString(); 

      return PartialView("_Time"); 
     } 
    } 
} 

答えて

2

それはのgettinですgキャッシュされる。私はこのためにアクション属性を使用します:

public class NoCacheAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuted (ActionExecutedContext context) 
    { 
     context.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    } 
} 


[HttpGet] 
[NoCache] 
public JsonResult GetSomeStuff() 
{ 
    ... 
} 
+0

完璧、ありがとう! – denious

+0

[OutputCache(Duration = 0)]もうまくいくようですが、2つの違いはありますか? – denious

+0

@denious私の頭の上から分からない。私はMSDNに相談したい。 – asawyer