0

私はこの PartialView を持っています:

@model IEnumerable<Tungsten.Models.ProductGroup>
<div id="treeviewpglist" class="filetree">
    <ul id="tree" class="treeview">
        <li><span class="folder"><a href="#" onclick="return false;" class="treenode"><input type="hidden" value="12">Name</a></span></li>
    </ul>
    <input type="hidden" value="0" id="pgID">
</div>

そして、このコードを使用してビューにロードします:

$.get('@Url.Action( "GroupList" , "Product" )', function (data) { $('#treeviewdiv div').replaceWith(data); }).success(function ()
{
    // do something
});

Chrome、Firefox、IE9 で問題なく動作します。しかし、IE8またはIE9互換ビューでは、コードは完全にロードされず、次のようにロードされます

<div id="treeviewdiv">
    <a class="treenode selected" onclick="return false;" href="#">
        <input value=12 type=hidden>Name
    </a>
    <input id=pgID type=hidden> 
</div>

どうすれば修正できますか?

$('#treeviewdiv div').load('@Url.Action( "GroupList" , "Product" )', function ()
{
    $('#treeviewdiv .treenode').click(function ()
    {
        $('#treeviewdiv .treenode').removeClass('selected');
        $(this).addClass('selected');
        $('#pgID').val($(this).children(':hidden').val());
        LoadProduct();
    });
});

IE8 または IE9 互換ビューでは、$(this).children(':hidden').val()は未定義です。

4

1 に答える 1

0

部分ビューの古いバージョンが表示されますか?

IE は GET 要求をキャッシュします。これを回避する方法は、現在のティックまたは乱数の追加のクエリ文字列パラメーターを追加して、URL を一意にすることです。

$.getまたは、メソッドの使用から、同じことを行う使用$.ajaxおよび設定に切り替えることもできます。cache:false

var url = '@Url.Action( "GroupList" , "Product" )';
var queryString = '?timespan=' + new Date().getTime();
$.get(url + queryString , 
    function (data) { $('#treeviewdiv div').replaceWith(data); 
});
于 2012-07-20T07:42:49.853 に答える