1

MVCアプリの1つに自動更新を実装する必要がありますが、問題が発生しています。jquery.get()と部分ビューを使用して自動更新ロジックを実行した場合、ChromeとOpera(最新バージョン)では完全に機能しますが、IE9では機能しません。問題がありますが、役に立ちません。

すべてのブラウザで自動更新機能をテストするために、小さなテストアプリを実行しました。このアプリでも同じ問題が発生しています。

私は同じもののために以下のコードを添付しました、そして誰かが私のコードの問題が何であるかを教えてもらえれば幸いです。これについてさらに情報が必要な場合はお知らせください。

ありがとう、アビ。

index.cshtml

@model IEnumerable<AutoRefreshInMVC.Views.ViewModels.HomeIndexModel>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/jquery-1.7.2-vsdoc.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.7.2.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.20.min.js" type="text/javascript"></script>
<title>Index</title>
<script type="text/javascript">
    function refresh() {
        $.get('/Home/_Quotes', function (result) {

            $('#refreshme').html(result);
        });
    }

    $(document).ready(function () {
        setInterval("refresh();", 10000);
    });
</script>
</head>
<body>
<div id="refreshme">
    @Html.Partial("_Quotes", Model)
</div>

HomeController

public class HomeController : Controller
{
    //
    // GET: /Home/
    public ActionResult Index()
    {
        List<HomeIndexModel> model = new GetQuotes().GetData();

        return View(model);
    }

    private static List<HomeIndexModel> GetData()
    {
        List<HomeIndexModel> model = new GetQuotes().GetData();
        return model.OrderByDescending(i => i.Change).ToList();
    }

    public ActionResult _Quotes()
    {
        List<HomeIndexModel> model = GetData();
        return View(model);
    }
}

_Quotes.chtml

@model IEnumerable<AutoRefreshInMVC.Views.ViewModels.HomeIndexModel>
<table id="tblIndex">
<tr id="header">
    <th>
        Code
    </th>
    <th>
        LastValue
    </th>
    <th>
        CurrentValue
    </th>
    <th>
        Change
    </th>
</tr>
@foreach (var item in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Code)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.LastValue)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.CurrentValue)
        </td>
        <td class="Change">
            @Html.DisplayFor(modelItem => item.Change)
        </td>
    </tr>

}

4

2 に答える 2

2

setIntervalは次のようになります。

setInterval(refresh(), 10000); 

また、呼び出しがキャッシュされる可能性があるため、_QuotesメソッドにOutputCache属性を配置することをお勧めします。

于 2012-05-30T16:35:37.330 に答える
2

$.getjqueryの省略形と$.postキャッシュに関連することが判明したメソッドを使用して、これらの行に沿っていくつかの問題が発生しました。

キャッシュを無効$.getにした同等のものに置き換えてみてください。$.ajax

$.ajax({
  url: '/Home/_Quotes',
  success: function (result) {
              $('#refreshme').html(result);
           },
  cache: false
});
于 2012-05-30T23:56:12.993 に答える