2017-06-01 37 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方法。谢谢。 –

相关问题