我正在尝试制作并获取网站的测验。目前您可以输入测验、问题和答案。现在我正在尝试编写参加的测验(任何有关如何执行此操作的建议都会有所帮助!)。我正在关注型号here和我生成的输出文件 looks like this 。现在,当我将代码复制到其自己的文件并运行它时,它可以正确运行。它确保所有问题都得到解答,并且对于多个问题,它会告诉您哪一个是正确的。
但是,当我从网站本身加载 html 原始生成的 javascript 时,它只检查您是否回答了其中一个问题,而不是另一个问题,并且当您单击“完成”时,它只显示一个答案的结果。如果您回答两个问题都错误,则只会显示 1 个答案错误,而不是 2 个(对于我的示例)。
这是我的 css looks like 。这是html raw portion代码。
我只是不确定为什么我会遇到 @Html.Raw 生成的 javascript 问题。如果还有其他方法来编写测验者,我也会洗耳恭听。
谢谢。
编辑:
同样,如果我将代码复制/粘贴到它自己的文件中,它可以工作,但从 MVC 渲染它就不起作用。
最佳答案
老实说,我不明白你为什么使用 @Html.Raw()
在每个脚本行上。事实上,您将所有这些都放在 <script>
中标签使得这完全没有必要,而且很难阅读。如果没有它,您仍然可以根据需要使用 Razor 语法和 C# 变量。
我的猜测是,这部分是导致所有问题的原因,也许您遗漏了一些东西,因为很难看出可能出了什么问题。
无论是在清理 Html.Raw 中的代码之前还是之后,我建议您在元素呈现在页面上后检查脚本的外观,并将其与单独脚本文件中的工作代码进行比较。
如果您仍然无法让它工作,请向我们展示您清理后的代码,以及您正在工作的单独代码文件,也许我或其他人可以仔细查看。
编辑:我尝试使用 Notepad++ 将注释中的 Pastebin 中的代码和标记粘贴到一个简单的 html 文件中。保存并检查是否有任何错误。我确实收到错误:
$ is not defined
这通常意味着库没有及时加载,或者根本没有加载。因此,在我看来,问题在于您将 jQuery 库的引用放在了测验脚本之后。
在测验脚本之前,有以下行:
<script src="jquery.js"></script>
我不确定它是否有任何影响,因为您在页面的底部中有更具体的引用:
<script src="/Scripts/jquery-1.7.1.js"></script>
我所做的是在两者之间交换位置,以便将 1.7.1.js 引用放在测验脚本之前,然后我完全删除另一个。这样脚本就可以工作了。 我还将代码放入 MVC View 中。虽然我确实没有时间设置所有 Controller 内容和最初的 foreach,但如果上面写的内容没有帮助,我接下来要检查 Controller 和 View 之间的连接。
正如我在评论中所说,我很确定如果您检查浏览器开发人员工具中的控制台,您会发现一些有用的东西。
关于javascript - @Html.Raw 生成的 javascript 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25048039/