2017-06-01 67 views
0

我有一個IActionResult我控制器上返回通過AJAX的局部視圖:如果我把一個<a>標籤在我的Razor視圖具有以下調用使用AJAX與錨控制器動作VS按鈕

[HttpGet] 
[Route("/propertycoverages/loss")] 
public IActionResult GetNewLoss() 
{ 
    return PartialView("_Loss"); 
} 

href="/propertycoverages/loss"

它的工作:

<a asp-controller="PropertyCoverages" asp-action="GetNewLoss" id="loss-btn" data-ajax="true" data-ajax-update="losses" data-ajax-success="addLoss" data-ajax-method="GET">Add</a> 

以下HTML屬性獲取的<a>標籤生成如預期的那樣,部分視圖在頁面內返回。但是,如果我嘗試使用一個按鈕:

<button asp-controller="PropertyCoverages" asp-action="GetNewLoss" id="loss-btn" type="submit" data-ajax="true" data-ajax-update="losses" data-ajax-success="addLoss" data-ajax-method="GET">Add</button> 

以下HTML屬性獲取的<button>標籤生成:formaction="/propertycoverages/loss"

,我重定向到/propertycoverages/loss這不是我想要的。 有沒有辦法讓按鈕的行爲像<a>標籤

注意:這些元素位於<form>之內。我也嘗試將<button>type="submit"切換到type="button",但控制器操作未被​​調用。

+1

入住這https://stackoverflow.com/a/44269478/4018629 –

+0

@AgamBanga我試圖改變按鈕類型=「按鈕,」但是當我點擊該按鈕,然後什麼也沒有發生。控制器操作不會被調用。 –

+1

爲什麼不把JS方法附加到你的按鈕再次點擊。在JS方法中,您可以回調動作獲取HTML並放在AJAX調用成功方法的頁面上? –

回答

1

您將需要將JavaScript方法附加到按鈕單擊操作。

<button onclick="myFunction()">Click me</button> 

在JS方法,你可以叫回動作得到HTML打下在AJAX調用成功方法在頁面上。

function onClick() { 
    var url = [setURL]; 

     $.ajax({ 
      type: "GET", 
      url: url, 
      data: { }, 
      success: function (response) { 
       $('#[setElementToReplace]').html(response); 
      } 
     }); 
    } 
0

嗨主要有三種方式從提交按鈕調用控制器操作。

WAY1:用簡單的形式

@using (Html.BeginForm("ActionName", "ControllerName")) 
{ 
    <input type="submit" name="add" value="Add" /> 
    } 

注意:默認情況下它是一個GET請求,如果需要,您可以更改formmethod =交

方法2:使用HTML屬性

@using (Html.BeginForm()) 
{ 

<input type="submit" name="add" value="Add" formaction="/anycontrollername/anyactionname" formmethod="get" 
/> 
} 

方式3:使用jquery

@using (Html.BeginForm()) 
{ 

<input type="submit" name="add" value="Add" id=」save」 
/> 
} 

$(document).ready(function() { 

    $("#save").click(function() { 
     $("form").attr("action", "/anycontroller /anyaction"); 
    }); 
}); 

看來,第二個方式將適合您的需求,

希望以上回答是有用的。

+0

我不認爲當我想要進行AJAX調用並留在頁面上時,我的按鈕可以是type =「submit」。我想我需要做一些類似於Derek上面建議的東西,並附上一個JS方法。謝謝。 –

相關問題