【问题标题】:Why does my ASP .NET MVC 5 Razor View not Recognize My Javascript fuction?为什么我的 ASP .NET MVC 5 Razor 视图无法识别我的 Javascript 函数?
【发布时间】:2017-02-13 15:31:40
【问题描述】:

我正在使用 Modal Bootstrap 类让用户填写一些表格,然后在最后有一个“完成”按钮来提交表格的答案:

<button type="submit" id="submitCallScriptBtn" onclick="submitInitialCallScript(this);" 
      data-ptKey="@Model.Patient.PtKey" data-assignedTaskKey="@Model.Tasks[0].TassKey" 
      class="btn btn-primary">Complete Initial Call</button>

因此,当用户单击提交按钮时,我想从名为“PatientSearch.js”的单独 JavaScript 文件中调用 JavaScript 函数:

function submitInitialCallScript(elem) {
    console.log("This Method is running");
    var e = document.getElementById("communication");
    var eResponse = e.options[e.selectedIndex].text;

    var ptKey = $(elem).data('ptKey');
    var assignedTasakKey = $(elem).data('assignedTaskKey');


    $.ajax({
        type: 'GET',
        dataType: 'text',
        url: '~/PatientController/SubmitInitialCallScript',
        data: {
            ptKey: ptKey,
            tass_Key: assignedTaskKey,
            question1: $("input[name=goodtime]:checked").val(),
            question2: $("input[name=startedDevice]:checked").val(),
            question3: $("input[name=driver]:checked").val(),
            question3a: $("input[name=comfort]:checked").val(),
            question4: $("#concerns").val(),
            question5: $("input[name=occupation]:checked").val(),
            question6: $("input[name=appointmentscheduled]:checked").val(),
            question6a: $("#doctor").val(),
            question6b: $("#appointDate").val(),
            question7: $("input[name=selfTracking]:checked").val(),
            question8: $("input[name=understand]:checked").val(),
            question9: eResponse,
            question10: $("#otherQuestions").val()

        }, success(data) {
            if (data == "true")
                window.location.assign("~/Controllers/Patient/Index");
            else
                alert("Error Submitting");

        }, failure(data) {
            alert("Error Submitting")
        }
    })

但是,我无法让我的 JavaScript 方法运行。当我点击我的按钮时,什么也没有发生..即使文件链接正确:

我做错了什么吗?是否有不同的方式来调用 JavaScript 方法而我做错了?

编辑:

以下是 Web ToolKit 错误的一些屏幕截图:

您在这里看到 PatientSearch.js 甚至不在文件结构中,即使它与您在 Visual Studio 中看到的相同。

【问题讨论】:

  • 它是否显示在开发者工具源选项卡中?
  • @JAG 如果你的意思是,脚本标签是否显示在开发工具中,是的。
  • 不仅仅是脚本标签,检查实际文件是否从Sources选项卡或Network选项卡加载
  • 貌似Sitewide.js加载正常,所以用同样的方法加载PatientSearch.js。相对路径src="~/.. 可能有问题
  • 没有什么明显的错误,但有一些不好的做法。 1)。 @model 声明应该是第一行。 2) 你应该避免硬编码的应用程序相关 URL,即~/。相反,请使用Url.Content("~/JavaScript/PatientSearch.js") 之类的东西,这将确保 URL 得到真正的评估。浏览器实际上不支持应用相对 URL。 Razor应该捕获硬编码的应用程序相关 URL 并为您更改它,但这不能保证。

标签: javascript jquery asp.net asp.net-mvc razor


【解决方案1】:

我正在使用 ASP .NET MVC 5。似乎在我的“_Layout.cshtml”的 &lt;head&gt; 标记中包含 PatientSearch.js &lt;script&gt; 可以让函数在特定视图不适合某些人的地方得到识别原因。不是真正的“解决方案”,但它确实解决了我打开这个问题的原因。

【讨论】:

  • 查看关于重组如何在页面中添加脚本的评论。您的代码似乎表明您正在将脚本与内容混合。为此,您可以利用 @sections。 Hth.
猜你喜欢
  • 2021-07-23
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 2013-03-19
相关资源
最近更新 更多