簡體   English   中英

ASP.NET MVC-刷新CodeMirror編輯器onclick

[英]ASP.NET MVC -Refresh CodeMirror editor onclick

我在局部視圖中有一個Codemirror編輯器,在主視圖中有一個文件列表。 單擊文件名后,我想刷新編輯器。 我嘗試了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" })
        }

我無法為列表元素分配id ,因為它們的編號在編譯時是未知的,並且在用戶添加或刪除文件時它會更改,這就是為什么大多數提供的解決方案都行不通的原因。 結果是3個編輯器重疊並顯示最后一個文件的內容。 並且<li>項不可單擊。 我的代碼在做什么錯?

編輯 :按如下所示更新腳本后:

<script>
        $(document).ready(function() {
            $(".filelist").on("click",function (e) {
                $("#partial").load('DevelopmentPartial');

            });
        });
    </script>

它刷新了部分視圖,但編輯器始終為空,而Model始終為null 使用“ onclick”更新模型是否錯誤?

如果有人遇到相同的問題,我可以通過將id更改為列表中的class,然后使用以下腳本來解決:

 <div id="partial">
    @{
        Html.RenderAction("DevelopmentPartial", new { path1 = Model.path});
    }
</div>


<script>
     $(document).ready(function () {
         $('.filelist').on('click', function (e) {
             alert('Im clicked on filePath = ' + $(this).attr('value'));
             var filePath = $(this).attr('value');    //value is attribute set in Html
             $('#partial').load('DevelopmentPartial', { path1: filePath });
         });
     });
</script>

和控制器:

 public PartialViewResult DevelopmentPartial(string path1)
    {
        modelSC.path = path1;
        return PartialView(modelSC);

    }

其中modelSC是控制器中的全局變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM