【发布时间】:2017-03-22 22:42:50
【问题描述】:
我在部分视图中有一个代码镜像编辑器,在主视图中有一个文件列表。单击文件名后,我想刷新编辑器。我尝试了 StackOverflow 和其他网站上提供的许多解决方案,但没有任何效果,这是我第一次使用 Javascript,所以我不知道我做错了什么。
这是我的代码:
控制器:
public ActionResult Index()
{
StudentsCodes model = new StudentsCodes();
model.Student = (Student)CurrentUser;
var user = UserManager.FindById(((Student)CurrentUser).InstructorID);
model.Instructor =(Instructor) user;
return View(model);
}
public PartialViewResult DevelopmentPartial (StudentsCodes path )
{
return PartialView(path);
}
主视图:
<script type="text/javascript" src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script type="text/javascript" src="~/Scripts/jquery-3.1.1.js"></script>
<ul id="tree">
@foreach (var file in Directory.GetFiles(Server.MapPath("~/Content/" + Model.Student.UserName + "/CompilerProject/" + name)))
{
var filename = Path.GetFileName(file);
<li id="filelist" onclick="@(Model.path = "~/Content/" + Model.Student.UserName + "/CompilerProject/src/" + @filename)">
<span class="glyphicon glyphicon-file"></span>
@filename
/li>
}
<div id="partial">
@{
Html.RenderPartial("DevelopmentPartial",null);
}
</div>
<script>
$(document).ready(function () {
$("#filelist").click(function (e) {
@{Html.RenderAction("DevelopmentPartial", Model);
}
});
});
</script>
部分观点:
@using (Html.BeginForm())
{
var fileContents= "";
if (Model==null)
{
fileContents = "";
}
else
{
fileContents = System.IO.File.ReadAllText(Server.MapPath(Model.path));
}
@Html.TextArea("code", fileContents, new { id = "code" })
}
我不能为列表元素分配 ids,因为它们的编号在编译时是未知的,并且当用户添加或删除文件时它会改变,这就是为什么提供的大多数解决方案都没有工作 。这里的结果是 3 个编辑器重叠并显示最后一个文件的内容。 <li> 项目是不可点击的。我在代码中做错了什么?
编辑: 更新脚本后如下:
<script>
$(document).ready(function() {
$(".filelist").on("click",function (e) {
$("#partial").load('DevelopmentPartial');
});
});
</script>
刷新局部视图,但编辑器始终为空,模型始终为 null。使用“onclick”更新模型有错吗?
【问题讨论】:
标签: javascript jquery razor asp.net-mvc-5