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
与现有视图相关联,只需刷新其内容即可。谢谢
答案 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);
}