2011-12-25 30 views
1

我有一個頁面,我正在顯示筆記,點擊一個按鈕後,我希望能夠添加一個筆記。以下代碼是我嘗試加載創建註釋操作結果的部分。點擊按鈕後的部分負載MVC

<script type="text/javascript"> 
    (function() { 
    $('#load-partial'.click(function(){ 
     $('#partial'.load('/EntityController/CreateNote/');}); 
    })();  
</script> 

<div id="partial"></div> 
<button type="button" id="load-partial" /> 

但是,單擊該按鈕不會執行任何操作。這裏出了什麼問題?

回答

1

非常好的建議,由達林季米特洛夫。要進入一個新的水平

您需要使用網址助手:$( '#部分')負載('@網址。行動(「CreateNote」,「實體」)');

爲了讓這個不顯眼的(和移動Java腳本到一個文件),你需要使用@URL助手來設置action屬性/值,然後收穫行動在JavaScript屬性值。在待處理的DropDownList的教程中,我做到以下幾點:

 @using (Html.BeginForm("IndexDDL", "Home", FormMethod.Post, 
new { id = "CountryStateFormID", 
StateListAction = @Url.Action("StateList") })) { 

- 然後在JavaScript

$('#CountriesID').change(function() { 
    var CountryStateFormID = $('#CountryStateFormID'); 
    $.getJSON(CountryStateFormID.attr('StateListAction') + '/' + $('#CountriesID').val(), function (data) { 

您還應該使用IE9/F12開發人員工具或Chrome或FF調試代碼。

1

這裏出了什麼問題?

對於初學者,您在顯示的內容中有很多javascript錯誤。在訂閱諸如click之類的事件之前,也不等待DOM準備就緒。您只需創建一個匿名函數,即可立即執行,而無需等待DOM準備就緒。它應該是這樣的:

<script type="text/javascript"> 
    $(function() { 
     $('#load-partial').click(function() { 
      $('#partial').load('@Url.Action("CreateNote", "Entity")'); 
     }); 
    });  
</script> 

<div id="partial"></div> 
<button type="button" id="load-partial" /> 

除此之外,有可能是類似的東西gazillions可以去錯在這裏(不幸的是,我們不能從窮人代碼排除片斷您提供):

  • 你忘了你已經證明
  • 你引用的jQuery腳本後引用的jQuery
  • 你引用的jQuery但提供了錯誤的URL
  • 控制器的行動,建議立即進行刪除d返回部分不存在
  • 應返回部分的控制器操作拋出異常
  • 應該返回部分的控制器操作不會引發異常,但它不會在部分視圖中找到部分視圖搜索(按慣例)位置
  • 應該返回部分的控制器操作不會拋出異常並且它會找到部分內容,但是在此部分中存在錯誤(錯誤的語法,空引用異常,...此列表將進入到無窮大)
  • 當您爲動作生成url時,您沒有使用url助手,因此如果您在虛擬目錄中部署此應用程序/EntityController/CreateNote/ url是proba bly錯誤。您需要使用url助手:$('#partial').load('@Url.Action("CreateNote", "Entity")');
  • 您使用/EntityController作爲控制器名稱,但根據約定,Controller後綴僅在命名控制器類時使用,而不在引用url時使用。因此,該網址應該可能是/entity/createnote(請參閱上一個用於生成網址的正確方法的原因)。
  • 你有一些JavaScript錯誤,你沒有顯示的網頁的一部分。使用諸如FireBug之類的JavaScript調試工具來調試您的腳本和AJAX請求。
  • ...這個例子不勝枚舉到無窮遠
+0

謝謝你的建設性的批評和我如何能提高我在未來的問題的那種指針。 – 2011-12-25 14:02:26

+0

>>。你需要使用url助手:$('#partial')。load('@ Url.Action(「CreateNote」,「Entity」)'); – RickAndMSFT 2011-12-25 18:07:01