Возвращение ответа из представления, содержащего файл типа ввода - Ошибка времени выполнения Microsoft JScript: ожидается объект - PullRequest
1 голос
/ 24 сентября 2010

У меня есть простое представление, которое имеет 2 текстовых поля и 1 ввод файла.

    <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<iLoyalty.BackOfficePortal.Models.SegmentModel>" %>

<% using (Html.BeginForm("SaveSegment", "Segment", FormMethod.Post, new { id = "SegmentForm", enctype = "multipart/form-data" }))
   { %>
<div class="StContent">
    <h3>
        <%= iLoyalty.BackOfficePortal.Globals.GetResourceText("CardSegmentInsert")%></h3>
    <br />
    <%= Html.HiddenFor(model => model.ApplicationName, new { id = "ApplicationName" })%>
    <%--<%= Html.HiddenFor(model => model.SegmentID, new { id = "SegmentID" })%>--%>
    <table width="95%" border="0" cellspacing="1" cellpadding="4" class="Table" style="margin: 0 0 0 10px">
        <tr class="Tr0">
            <td style="width: 200px" class="Tr1">
                <%= iLoyalty.BackOfficePortal.Globals.GetResourceText("ApplicationName")%>
            </td>
            <td>
                <span id="ApplicationName">
                    <%= Model.ApplicationName %></span>
            </td>
        </tr>
        <tr class="Tr0">
            <td style="width: 200px" class="Tr1">
                <%= iLoyalty.BackOfficePortal.Globals.GetResourceText("CardSegmentName")%>
            </td>
            <td>
                <%= Html.TextBoxFor(model => model.SegmentName, new { id = "SegmentName", @class = "txtBox" })%>
            </td>
        </tr>
        <tr class="Tr0">
            <td style="width: 200px" class="Tr1">
                <%= iLoyalty.BackOfficePortal.Globals.GetResourceText("RewardRate")%>
            </td>
            <td>
                <%= Html.TextBoxFor(model => model.GainRate, new { id = "GainRate", @class = "txtBox" })%>
            </td>
        </tr>
        <tr class="Tr0">
            <td style="width: 200px" class="Tr1">
            </td>
            <td>
                <input name="PostedFile" id="PostedFile" type="file" class="txtBox" style="width: 200px" />
            </td>
        </tr>
        <tr class="Tr0">
            <td class="Tr1" colspan="2" style="text-align: right">
                <input id="saveBtn" type="submit" class="button" value='<%= iLoyalty.BackOfficePortal.Globals.GetResourceText("Add")%>' />
            </td>
        </tr>
    </table>
</div>
<script type="text/javascript">
    $(document).ready(function () {
        $('#saveBtn').click(function () {
            //BlockPage();
            var options = {
                target: '#contentDiv',
                success: function () {
                    BlockDivSuccess('generalCover');
                }
            };
            $('#SegmentForm').ajaxForm(options);
        });
    });
</script>
<% } %>

После нажатия кнопки saveBtn я вижу, что в режиме отладки он отправляет соответствующие данные в соответствующее действие и работает хорошо. И в firebug я вижу, что ответ на вызов ajax такой же, как я ожидаю. Но только то есть Я получаю ошибку JavaScript, которая просто говорит: Ошибка времени выполнения Microsoft JScript: ожидаемый объект

После того, как я удалил строку выше, все в порядке во всех браузерах. Но мне это тоже нужно.

<input name="PostedFile" id="PostedFile" type="file" class="txtBox" style="width: 200px" />

У вас есть идеи по поводу этой проблемы? Интересно, что это происходит только в т.е.

alt text

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

1 Ответ

1 голос
/ 25 сентября 2010

Просто присоедините ваш отладчик Visual Studio к процессу IE, и затем вы увидите, какая переменная javascript равна нулю.

Откройте меню «Отладка», выберите «Присоединить к процессу ...», выберите iexplore.exe из списка запущенныхпроцессы и нажмите кнопку Прикрепить.Убедитесь, что в текстовом поле «Присоединить к:» указано «Сценарий», в противном случае нажмите кнопку «Выбрать ...» и выберите его.

Также убедитесь, что отладка сценария не отключена в IE.

См. http://www.jonathanboutelle.com/how-to-debug-javascript-in-internet-explorer

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