如何在没有页面刷新和不使用javascript的情况下刷新ASP.NET MVC 4中的div内容?

时间:2014-04-30 12:33:21

标签: c# asp.net .net asp.net-mvc

Noob需要帮助) 我有一个根文件夹的文件列表,我想把它作为一种文件浏览器,但我不想每次都刷新一个页面。 这是我试图刷新的部分视图的代码:

<div class="createdb">
@{
    string x = null;
    string[] list = Directory.GetDirectories(HostingEnvironment.ApplicationPhysicalPath);
    foreach(var item in list)
    {
        x = item.Replace(HostingEnvironment.ApplicationPhysicalPath, "");
        <div class="item"><img src="~/Img/fld.png" class="icon"/>@x</div>  
    }  

    string[] list2 = Directory.GetFiles(HostingEnvironment.ApplicationPhysicalPath);
    foreach(var item in list2)
    {
        x = item.Replace(HostingEnvironment.ApplicationPhysicalPath, "");
        <a href="@Html.Action("Refresh");"><div class="item"><img src="~/Img/file.png" class="icon"/>@x</div></a>
    }
}
</div>

Controller ActionResult仅返回View。 我不知道如何将其他ActionResult与现有视图相关联,只需刷新其内容即可。谢谢

3 个答案:

答案 0 :(得分:1)

你需要JavaScript或JQuery或AJAX调用才能确保得到这个...因为它是在客户端(Web浏览器)完成的。

答案 1 :(得分:0)

您需要了解,一旦HTML位于客户端的浏览器中,它就会死了#34; 除非客户端再次加载相同的页面(在查询字符串或表单中使用相同或新的参数)或加载新页面,否则任何内容都不能改变浏览器中的HTML。

除非您使用某种客户端脚本,例如javascript。

因此,如果你想避免页面加载,你应该使用javascript(使用AJAX)。

如果你想避免javscript,你需要页面加载/重新加载。

答案 2 :(得分:0)

非常感谢你。我已经明白在这种情况下我无法避免使用js。这就是我做到的:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
    $(document).on('click','.createdb a .item', function(e) {
        e.preventDefault();
        var link = $(this).text();
        var p = $('.hid').text();
        $.ajax({
            url: '@Url.Action("DBView")',
            type: 'post',
            cache: false,
            async: true,
            data: { id: link, path: p },
            success: function (result) {
                $('.mainarea').html(result);
            }
        });
    });

控制器看起来像这样:

[HttpPost]
        public PartialViewResult DBView(string id, string path)
        {
            FileManager FM = new FileManager();
            FM.Path = path;
            if (id != "...")
            {
                FM.Path =  path + id + "\\";
            }
            else
            {
                FM.Path = FM.Path.Remove(FM.Path.LastIndexOf("\\"), 1);
                FM.Path = FM.Path.Remove(FM.Path.LastIndexOf("\\") + 1, y - x - 1);
            }
            return PartialView("CreateDB", FM);
        }