这个"字符串文字中的太多字符"消息来自何处?

Stu*_*ser 0 javascript asp.net asp.net-mvc asp.net-ajax

大家早上好,

我敢肯定这是一个给我,但我不知道这个问题来自哪里.

我在视图中有以下几行:

<fieldset>
    <dl>
        <dt>
            <label for="FormTypes">Form Type:</label>
        </dt>
        <dd>           
            <% =Html.DropDownList("FormTypes", "All") %>
        </dd>
    </dl>
</fieldset>
<fieldset>
    <dl>
        <dt>
            <label for="Parts">Form Part:</label>
        </dt>
        <dd>           
            <% =Html.DropDownList("Parts", "All") %>
        </dd>
    </dl>
</fieldset>
Run Code Online (Sandbox Code Playgroud)

这不会导致任何问题,但是当根据表单类型的选择将以下脚本添加到顶部以更新部件时(在回答此SO问题之后) 在Asp.Net中使用JQuery绑定DropDownlists)

<script type="text/javascript">
    <!--
        $('#FormTypes').change(function() {
            var val = $(this).val();
            $parts = $('#Parts');
            $.ajax({
                url: '<%= Url.Action('FormParts') %>',
                dataType: 'json',
                data: { ID: val },
                success: function(parts) {
                    $.each(parts, function(i, part) {
                        $parts.append('option value="' + part.ID+ '">' + part.Code + '</option>');
                    });
                },
                error: function() {
                    alert('Failed to retrieve parts list.');
                }
            });
        });

    //-->
</script>
Run Code Online (Sandbox Code Playgroud)

(FormParts操作将返回一个新对象以填充部件下拉列表)

我收到消息:该行的字符文字中有太多字符

<% =Html.DropDownList("Types") %>
Run Code Online (Sandbox Code Playgroud)

看来这个问题是由添加的javascript引起的,但是为什么以及为什么错误出现在标记中以前很好的代码行而不是脚本中呢?

提前致谢.

Mat*_*ley 9

虽然你分开的行没有任何问题,但原始代码中的这一部分确实困扰我:

<%= Url.Action('FormParts') %>
Run Code Online (Sandbox Code Playgroud)

您在ASP中使用单引号作为字符串.这将其标记为字符文字,而不是字符串.用双引号替换它们你应该没问题.

<%= Url.Action("FormParts") %>
Run Code Online (Sandbox Code Playgroud)