Частичное представление mvc теряет путь к папке с изображениями при использовании jquery - PullRequest
0 голосов
/ 20 марта 2012

Это то, что у меня есть, и оно работает:

$(function(){
$('.slide-out-div').tabSlideOut({
        tabHandle: '.handle',                     //class of the element that will become your tab
        pathToTabImage: 'http://mhmiisdev2/images/contact_tab.gif', //path to the image for the tab //Optionally can be set using css
        imageHeight: '122px',                     //height of tab image           //Optionally can be set using css
        imageWidth: '40px',                       //width of tab image            //Optionally can be set using css
        tabLocation: 'right',                      //side of screen where tab lives, top, right, bottom, or left
        speed: 300,                               //speed of animation
        action: 'click',                          //options: 'click' or 'hover', action to trigger animation
        topPos: '200px',                          //position from the top/ use if tabLocation is left or right
        leftPos: '20px',                          //position from left/ use if tabLocation is bottom or top
        fixedPosition: true                      //options: true makes it stick(fixed position) on scroll
    });
});

Это то, что я хочу, и оно не работает, когда я переключаюсь с одного контроллера на другой контроллер.УВЕДОМЛЕНИЕ ПУТЬ К ИЗОБРАЖЕНИЮ НЕ АБСОЛЮТНЫЙ

$(function(){
    $('.slide-out-div').tabSlideOut({
        tabHandle: '.handle',                     //class of the element that will become your tab
        pathToTabImage: '/images/contact_tab.gif', //path to the image for the tab //Optionally can be set using css
        imageHeight: '122px',                     //height of tab image           //Optionally can be set using css
        imageWidth: '40px',                       //width of tab image            //Optionally can be set using css
        tabLocation: 'right',                      //side of screen where tab lives, top, right, bottom, or left
        speed: 300,                               //speed of animation
        action: 'click',                          //options: 'click' or 'hover', action to trigger animation
        topPos: '200px',                          //position from the top/ use if tabLocation is left or right
        leftPos: '20px',                          //position from left/ use if tabLocation is bottom or top
        fixedPosition: true                      //options: true makes it stick(fixed position) on scroll
    });
});

HTML для полноты ....

<div class="slide-out-div">
    <a class="handle" href="http://link-for-non-js-users.html">Content</a>
    <h3>Medical Variance Reports</h3>
    <div>
        <ul>
            <li><a href="http://mhmssrs2/Reports/Pages/Report.aspx?" target="_blank">Individual Medicines</a></li>
        </ul>
    </div>
</div>

Я подозреваю, что pathToTabImage: /images/contact_tab.gif' теряет свой контекст при просмотре через контроллеры.Помоги мне понять ...

Ответы [ 3 ]

2 голосов
/ 20 марта 2012

Я подозреваю, что pathToTabImage: /images/contact_tab.gif 'теряет контекст при просмотре контроллеров.

О, да, вы правы.При работе с URL-адресами в ASP.NET MVC всегда используйте помощники по URL:

pathToTabImage: '@Url.Content("~/images/contact_tab.gif")'

Никогда не кодируйте URL-адреса жестко, как вы это делали в своем коде.Это обеспечит работу вашего приложения при развертывании его в IIS в виртуальном каталоге.

0 голосов
/ 20 марта 2012

Вот что я сделал

 alert(UrlContent("/hdd/images.gif")); //for debugging purposes 
 alert(UrlContent("~/hdd/images.gif"));
 alert(UrlContent("hdd/images.jpg"); 
 //they all return the correct url 

function UrlContent(url) {



// first lets take care of users that are smart

url = $.trim(url.replace("~/", "")); //this should take care of smart users!
if (url.charAt(0) == "/") {
    url=url.substring(1,url.length)
}
//now that we have taken care of smart users lets form the url

var UrlPath = location.protocol + '//' + location.hostname +location.port+'/'+url

return UrlPath

}

0 голосов
/ 20 марта 2012

Просто используйте функцию помощника Url.Content() внутри вашего JS вот так

pathToTabImage: @Url.Content("~/images/contact_tab.gif")

Если ваш JS находится внутри внешнего файла Javascript, вы просто обращаетесь к глобальной переменной.

Вверху просмотра:

var myPath = @ Url.Content ("~ / images /");

Внутри внешнего файла JS: pathToTabImage: myPath + "contact_tab.gif"

...