Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重新加载页面时图像不断消失_C#_Jquery_Asp.net Mvc - Fatal编程技术网

C# 重新加载页面时图像不断消失

C# 重新加载页面时图像不断消失,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,我有一个按钮可以调用MVC控制器。控制器返回要在表中显示的特定数据集。在该页面完成后,我希望根据按下的按钮显示特定的图像 我尝试了几种不同的方法。它们似乎起作用了,但问题是,img一直在消失。我按了按钮。似乎Jquery立即执行,显示正确的图像,然后控制器发送表和页面刷新的数据。隐藏图像 下面是按钮的单击事件 <script> $(document).ready(function () { var rowCount = $('#policyTable tr')

我有一个按钮可以调用MVC控制器。控制器返回要在表中显示的特定数据集。在该页面完成后,我希望根据按下的按钮显示特定的图像

我尝试了几种不同的方法。它们似乎起作用了,但问题是,img一直在消失。我按了按钮。似乎Jquery立即执行,显示正确的图像,然后控制器发送表和页面刷新的数据。隐藏图像

下面是按钮的单击事件

<script>
    $(document).ready(function () {
        var rowCount = $('#policyTable tr').length;
        $("span#policyCount").text(rowCount);

        $("#btnDawn").click(function (e) {
           $('span#uwPic').prepend('<img src= "/Images/dawnL.jpg" />');  
        })
   })   
</script>

$(文档).ready(函数(){
var rowCount=$('#policyTable tr')。长度;
$(“span#policyCount”).text(行计数);
$(“#btnDawn”)。单击(函数(e){
$('span#uwPic')。前缀('';
})
})   
同样,这是可行的,但是图像在页面加载后不会保留


如何使图像保持不变

这当然是猜测,但一个常见的问题是,您正在单击的html元素可能是
,并且导航(href)会在单击后立即执行。要阻止导航,单击处理程序必须返回
false

$("#btnDawn").click(function (e) {
    $('span#uwPic').prepend('<img src= "/Images/dawnL.jpg" />');
    return false; // <-- add this
})
$(“#btnDawn”)。单击(函数(e){
$('span#uwPic')。前缀('';

return false;//多亏了上面@Bosco的想法,我找到了一个解决方案。当控制器被调用时,它刷新页面以显示新调用的数据。在页面刷新之前终止Jquery调用。这本身我不太明白,因为我认为Jquery调用是在页面刷新和加载之后才进行的。Onwa我想是的

我有一个switch语句,根据按下的按钮返回某些视图。我还返回一条TempData消息,在视图中显示正确的图像

  switch (month)
        {
            case "dawn":
                TempData["CB"] = "Dawn's";
                TempData["DL"] = "1";
                return View(DawnL);

            case "josh":
                TempData["CB"] = "Josh's";
                TempData["JB"] = "1";
                return View(JoshB);

            case "kyle":
                TempData["CB"] = "Kyle's";
                TempData["KB"] = "1";
                return View(KyleB);

            case "hank":
                TempData["CB"] = "Hank's";
                TempData["HW"] = "1";
                return View(HankW);

            default:
                TempData["CB"] = "All";
                return View(NextMonth2);
        }
在视图中,我使用它来找到正确的图像

  <th>
        @if (TempData["DL"] != null)
        {
            <img src="~/Images/dawnLThumbNail.jpg" id="dawn" alt="Dawn Lambert" />
        }
        else if (TempData["JB"] != null)
        {
            <img src="~/Images/joshBThumbNail.jpg" id="jb" alt="Josh Beaman" />
        }
        else if (TempData["KB"] != null)
        {
            <img src="~/Images/kyleBThumbNail.jpg" id="jb" alt="Kyle Burgess" />
        }
        else if (TempData["HW"] != null)
        {
            <img src="~/Images/hankWThumbNail.jpg" id="jb" alt="Hank Wilson" />
        }
    </th>

@if(TempData[“DL”!=null)
{
}
else if(TempData[“JB”!=null)
{
}
else if(TempData[“KB”!=null)
{
}
else if(TempData[“HW”!=null)
{
}

这将在刷新后保持图像。问题已解决。

您可以将代码发布到控制器api调用吗?

之后可能会运行其他JavaScript代码,并用其他HTML覆盖添加图像的位置。虽然很难确定,但看不到更多代码。请尝试使用t逐行浏览页面JS调试器(在浏览器的开发工具中)看看Anks ADyson上还有什么,我想说你是对的,但是没有其他JS代码在后面运行。你在上面看到的行数是我在这个页面上唯一的JS代码。这很奇怪。我使用了e.preventdault或return false,两者都阻止页面完成加载。图像仍然存在,但控制器作业没有完成h、 旧的表数据保持不变。当您调用控制器时,会导致页面重新加载,如果您必须分发图像,则必须发送一些内容(单击的按钮)然后你可以检查这个值并设置你的图像,或者你可以使用ajaxposting@Bosco谢谢..你完全正确。我使用了来自控制器的tempmessage来做这件事。我将发布我的代码。谢谢,thmshd。这与e.preventdefault()实现了相同的功能;我想要的图像仍然存在,但如果没有重新加载页面,则不会显示正确的数据。仍然显示旧表数据。是的,对@swapmeet_Lou,我只是在代码中没有看到
e.preventdefault()
,因此我认为值得一试。