Откуда приходит это сообщение «Слишком много символов в строковом литерале»? - PullRequest
0 голосов
/ 27 октября 2009

Доброе утро всем,

Я уверен, что это - Дай мне, но я понятия не имею, откуда эта проблема.

У меня есть следующие строки в представлении:

<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>

Это не вызывает проблем, но при добавлении следующего скрипта в начало для обновления деталей на основе выбора типа формы (после ответа на этот вопрос SO Привязка DropDownlists с JQuery в Asp.Net )

<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>

(где действие FormParts вернет новый объект для заполнения раскрывающегося списка деталей)

Я получаю сообщение: Слишком много символов в символьном литерале в строке

<% =Html.DropDownList("Types") %>

Похоже, что эта проблема вызвана добавлением javascript, но почему и почему ошибка в ранее исправленной строке кода в разметке, а не в сценарии?

Заранее спасибо.

Ответы [ 2 ]

9 голосов
/ 27 октября 2009

Хотя в строке, которую вы отделили, нет ничего плохого, эта часть исходного кода меня беспокоит:

<%= Url.Action('FormParts') %>

Вы использовали одинарные кавычки для строки в ASP. Это помечает его как символьный литерал, а не строку. Замените их двойными кавычками, и все будет в порядке.

<%= Url.Action("FormParts") %>
0 голосов
/ 29 октября 2009

Я не уверен, откуда возникла эта проблема, я обновил скрипт до следующего, и он работает.

<script type="text/javascript">
    <!--

    $(function() {
        $('#FormTypes').change(function() {
            //clear all items in list and replace "All" option
            $parts = $('#FormParts');
            $parts.html("");
            $parts.append('<option value="">All</option>');

            var selectedValue = $(this).val();
            if (selectedValue != "") {
                $.ajax({
                    url: '<%= Url.Action("FormParts") %>',
                    dataType: 'json',
                    data: { FormTypeID: selectedValue },
                    success: function(parts) {
                        //repopulate list with JSON objects
                        $.each(parts, function(i, part) {
                            $parts.append('<option value="' + part.ID + '">' + part.Code + '</option>');
                        });
                    },
                    error: function() {
                        alert('Parts list could not be retreived. \n Please use the feedback link to inform us');
                    }
                });
            }
        });
    });
    //-->
</script>

Для тех, кто использует этот код, в будущем, пожалуйста, обратите внимание, что я добавил оценку

if (selectedValue != "")

это было добавлено, если в первом раскрывающемся списке FormTypes выбрана опция «Все», нет списка зависимых частей, которые следует заполнить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...