0
我在部分視圖中有一個codemirror編輯器,在主視圖中有一個文件列表。一旦文件名被點擊,我想刷新編輯器。我嘗試了很多StackOverflow和其他網站上提供的解決方案,但沒有任何工作,這是我第一次使用Javascript,所以我無法弄清楚我做錯了什麼。ASP.NET MVC -Refresh CodeMirror編輯器onclick
這是我的代碼:
控制器:
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" })
}
我不能分配ID S代表列表中的元素,因爲它們的數量是在編譯時未知的,當用戶添加或刪除文件,它的變化,這就是爲什麼大多數提供的解決方案沒有工作。這裏的結果是3個編輯器重疊並顯示最後一個文件的內容。並且<li>
項目不可點擊。我在代碼中做錯了什麼?
編輯: 更新腳本以下後:
<script>
$(document).ready(function() {
$(".filelist").on("click",function (e) {
$("#partial").load('DevelopmentPartial');
});
});
</script>
它刷新局部視圖,但編輯始終是空的,而Model總是空。使用「onclick」更新模型是否是錯誤的?