Javascript语法错误不知道我做错了什么

标签 javascript jquery asp.net-mvc razor

我对 JavaScript 还很陌生,但我正在学习.. 但现在我陷入困境,我做了这个 JavaScript,除了语法错误

$(function () {
    $(function () {
        $('#date').datepicker({
            showButtonPanel: true,
            changeMonth: true,
            changeYear: true,
            dateFormat: "yy-mm-dd",
            firstDay: 1,
            onSelect: function (dateText) {
                $('#EndDate').datepicker('option', 'minDate', new Date(dateText));
            }
        });
    });
});

if (!((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)))) {

    $(function () {
        $("#startTime").timePicker({
            step: 15,
            endTime: "23:45"
        });
    });
    $(function () {
        $("#endTime").timePicker({
            step: 15,
            endTime: "23:45"
        });
    });
    $(function () {
        $("#breakTime").timePicker({
            step: 5,
            endTime: "03:00"
        });
    });
}
function SetDate(dt) {
    $('#date').val(dt);
}

var n = @(Model.Projects.Count);

function AddProject() {
    n++;
    $.ajax({
        type: "GET",
        url: "@(Url.Action("Project"))/" + n + "/?showDescription=false",
        dataType: "html",
        success: function(data) {
            $('#projects').append(data);
        }
    });
}

在我的 AddProject 函数上,我收到了错误,但我怎么看不出可能出了什么问题?

这就是我想要使用脚本的 View 。

                            @if (ViewData["posted"] != null)
                            {
                                <div class="alert alert-success">
                                    <strong>Inställningar sparade</strong>
                                </div>
                            }

                            @using (Html.BeginForm("Settings", "Reports", FormMethod.Post, new { enctype = "multipart/form-data" }))
                            {
                                <div class="portlet light">
                                    <div class="portlet-title">
                                        <div class="caption">
                                            <span class="caption-subject font-green-sharp bold uppercase">Inställngar</span>
                                        </div>
                                    </div>
                                    <table class="table table-striped table-bordered table-hover">
                                        <tr>
                                            <td>Starttid:</td>
                                            <td>@Html.TextBox("startTime", Model.Times.StartTime)</td>
                                        </tr>
                                        <tr>
                                            <td>Sluttid:</td>
                                            <td>@Html.TextBox("endTime", Model.Times.EndTime)</td>
                                        </tr>
                                        <tr>
                                            <td>Rastlängd:</td>
                                            <td>@Html.TextBox("breakTime", Model.Times.BreakTime)</td>
                                        </tr>
                                    </table>
                                </div>

                                        <div id="projects">
                                            @foreach (var data in Model.Projects)
                                            {
                                                Html.RenderPartial("Project", data, ViewData["vd"] as ViewDataDictionary);
                                                var viewDataDictionary = ViewData["vd"] as ViewDataDictionary;
                                                if (viewDataDictionary != null)
                                                {
                                                    viewDataDictionary["id"] = (int)viewDataDictionary["id"] + 1;
                                                }
                                            }
                                        </div>
                                            <a href="javascript:AddProject()" class="btn btn-primary">Lägg till projekt</a>
                                            <button type="submit" class="btn btn-primary">Spara</button>
                            }
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

最佳答案

Javascript 文件不支持 Razor 编译。只有 View 才能做到这一点。您不能将 Razor 放在单独的 JS 文件中。

相反,将任何必需的信息注入(inject)到 View 中(例如,作为 data- 或其他属性注入(inject)到元素中),并让 JS 从元素中(或从您设置的一些全局变量中获取这些值) View 中)。

我将为您添加一些示例...

示例 HTML(属性注入(inject)):

<a id="addProject" href="@(Url.Action("Project") + "/{id}/?showDescription=false")" class="btn btn-primary">Lägg till projekt</a>

JQuery
 $('#addProject').click(function(){
      var url = $(this).attr('href');
      url = url.replace("{id}", myNewId);
      $.ajax({ 
         url: url
         ...
      });
 });

我强烈建议不要将内联事件处理程序(如 onclick="")与 jQuery 一起使用,因为将事件代码与注册分开,使维护更加困难,并且不具有与 jQuery 事件相同的功能处理。

示例 HTML(全局变量注入(inject))

将此代码片段放置在 View 中

<script type="text/javascript>
     var projectCount = @(Model.Projects.Count);
     // or
     window.projectCount = @(Model.Projects.Count);
</script>

然后您可以通过以下方式从其他 JS 文件访问 projectCount:

  var count = projectCount + 1;

  var count = window.projectCount + 1;

关于Javascript语法错误不知道我做错了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31448862/

相关文章:

javascript - wp_编辑器 : How to load wp_editor on demand using jQuery?

javascript - Meteor - 如何使单击的表格行保持突出显示的颜色

jquery - 验证至少一个复选框

javascript - Kendo DropDownList 触发器更改给出 "n is not a function"

jquery - 跨域发布到 ASP.Net MVC 应用程序

javascript - 自定义 JQuery 延迟处理程序

javascript - Wordpress 下拉菜单

javascript - 浏览器选项卡未激活时的 Jquery 简单 slider 问题

php - $_GET 变量在分页代码中未定义

c# - 使用 Entity Framework 将更改保存到 SQL Server 数据库时,一个或多个实体的验证失败