2015-04-30 73 views
3

我已經閱讀了很多網絡上的類似問題,但仍然無法找出問題所在。我的Ajax.BeginForm通過Controller中的PartialView返回消息,但該字符串會替換整個頁面。Ajax.BeginForm替換整個頁面

View

@using (Ajax.BeginForm("NoMoreItem", "ProductListing", 
new AjaxOptions 
{ 
HttpMethod = "get", 
InsertionMode = InsertionMode.Replace, 
UpdateTargetId = string.Concat("NoMoreItemSection1-", counter) 
}, new { @id = string.Concat("NoMoreItemForm1-", counter) })) 
{ 
    <input type="hidden" value="@Model.Email" name="email" /> 
    <input type="hidden" value="@i.code" name="code" /> 
    <input type="submit" value="notify me" /> 
} 
</div> 

我的控制器:

public ActionResult NoMoreItem(string email, string productCode) 
{ 
    string message; 
    _waitinglist.Save(email, productCode); 
    message = "Item added to Waiting List"; 
    return PartialView("ItemAdded", message); 
} 

ItemAdded查看:

@model string 
<div> 
    @Model 
</div> 

我引用jquery.unobtrusive-ajax.js文件在_Layout.cshtml所以它似乎不是原因。

有沒有人有想法爲什麼消息取代整個頁面?

+0

發生這種情況時,大部分時間都是因爲腳本加載不正確。看到這裏http://stackoverflow.com/questions/23895918/mvc5-ajax-beginform-and-the-correct-scripts-load-order – Jasen

+0

在點擊按鈕之前呈現的HTML看起來像什麼? – Jasen

+0

@Jasen與項目名稱和按鈕的表。我在佈局中包含了js文件,但沒有在ItemAdded視圖中使用佈局。也許這可能是原因?如果是這樣,我應該在部分視圖還是父視圖中引用js文件? – jkl

回答

1

確保您引用MS文件

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

也是我想你看後,並沒有得到。

+0

這些腳本已過時http://stackoverflow.com/questions/8782697/are-microsoftajax-js-microsoftmvcajax-js-and-microsoftmvcvalidation-js-obsolete – Jasen

+0

但您仍然必須包含它們。 –

+0

不,它不起作用。奇怪的是,當我在頁面完全加載之前單擊按鈕時,它可以正常工作。但在頁面完全加載後停止工作。太奇怪了。 – jkl

0

仔細檢查您的jquery.unobtrusive-ajax.js是否正確加載到頁面中,並在輸入標記中檢查產品代碼的名稱(應該與action參數相同)。

讓我知道這是否解決了您的問題。

+0

'bundles.Add(新的ScriptBundle(「〜/ bundles/js」).include(「〜/ Scripts/jquery.unobtrusive-ajax.js」));' – jkl

+0

它正確加載的權利? – jkl

+0

不,它不起作用。奇怪的是,當我在頁面完全加載之前單擊按鈕時,它可以正常工作。但在頁面完全加載後停止工作。太奇怪了。 – jkl