2009-08-06 36 views
1

這是一個非常奇怪的問題。我開發了一個小型MVC應用程序,並使用內置的開發服務器中的VS2008完成了測試,並且所有功能都符合我的預期。我現在已將解決方案移至IIS託管的位置,並在使用Ajax.ActionLink的視圖中看到不同的結果。Asp.Net MVC Ajax.ActionLink的行爲與使用內置的VS2008開發服務器向IIS託管時的行爲不同

actionlink鏈接到一個控制器動作,它返回一個局部視圖(.ascx)。在鏈接的AjaxOptions中,我指定了希望動作返回的部分視圖替換的DOM元素的UpdateTargetId。使用內置開發服務器運行應用程序時,行爲與預期的一樣 - > ajax調用成功返回partialview並替換指定的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的經驗,所以我不確定在哪裏事件開始嘗試和解決這個問題,所以即使是尋找什麼的指針也會很棒。

回答

2

好吧,所以我已經解決了這個問題,原來是由我用於視圖所需的腳本(在本例中爲MicrosoftAjax.js和MicrosoftMvcAjax.js)的src引用引起的。我使用的路徑在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"/> 

愚蠢的錯誤,但解決方案並不明顯考慮症狀。

+0

這正是我所需要的。我花了幾個小時弄這個,直到我在這裏看到你的帖子。謝謝! – Baxter 2014-07-23 03:57:21

相關問題