Asp.Net MVC Ajax.ActionLink ведет себя по-разному при использовании встроенного в VS2008 сервера разработки для размещения IIS - PullRequest
1 голос
/ 07 августа 2009

Это действительно странная проблема. Я разработал небольшое приложение MVC и до сих пор проводил тестирование с использованием встроенного в Dev200 сервера VS2008, и все работает, как я ожидаю. Теперь я перенес решение на хостинг IIS и вижу разные результаты в представлении, использующем Ajax.ActionLink.

actionlink ссылается на действие контроллера, которое возвращает частичное представление (.ascx). В AjaxOptions ссылки я указываю UpdateTargetId элемента DOM, который я хочу заменить частичным представлением, возвращаемым действием. При запуске приложения с использованием встроенного сервера dev поведение такое же, как и ожидалось -> вызов ajax успешно возвращает частичное представление и заменяет указанный элемент DOM. Однако при размещении в IIS действие контроллера успешно выполняется, но результат отображается на новой странице, а не заменяет указанный элемент DOM.

Вот соответствующий источник для страницы, которая делает вызов ajax:

<% if (info.CurrentStatus != OrderStatus.Received &&
              info.CurrentStatus != OrderStatus.Processing)
           { %>
                <td><%= Ajax.ActionLink("Reprocess Order", "Reprocess",
                            new { generatedId = info.GeneratedId },
                            new AjaxOptions
                            {
                                UpdateTargetId = "success" + info.GeneratedId,
                                OnSuccess = "reprocessSuccess"
                            })%></td>
        <% } %>

        <td><%= Html.Div("success" + info.GeneratedId) %> </td>

А вот действие, которое обеспечивает частичное представление:

[RequiresSearch()]
public ActionResult Reprocess(string generatedId)
{
    if (RequestReprocessingOfOrder(generatedId))
    {
        ViewData["reprocessSuccess"] = "Reprocessing request successful. Order is queued for reprocessing";
    }
    else
    {
        ViewData["reprocessSuccess"] = "Reprocessing request failed. Please contact the administrator";
    }

    return PartialView();
}

Любая помощь будет принята с благодарностью !!!

РЕДАКТИРОВАТЬ: У меня нет большого опыта работы с mvc / ajax, поэтому я не уверен относительно того, где событие начать пытаться решить эту проблему, так что даже указатели на то, что искать, было бы здорово. 1015 *

1 Ответ

2 голосов
/ 07 августа 2009

Итак, я решил эту проблему, которая, как оказалось, была вызвана ссылками src, которые я использовал для сценариев, необходимых для просмотра (в данном случае MicrosoftAjax.js и MicrosoftMvcAjax.js). Путь, который я использовал, больше не действовал при размещении в IIS, поэтому динамическое создание пути решило проблему.

Заменить:

<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"/>
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript"/>

С:

<script src="<%= Url.Content("~/Scripts/MicrosoftAjax.js")%>" type="text/javascript"/>
<script src="<%= Url.Content("~/Scripts/MicrosoftMvcAjax.js")%>" type="text/javascript"/>

Глупая ошибка, но решение не очевидно с учетом симптомов.

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