2017-06-01 6 views
0

VSアンカーにAJAXを使用してコントローラのアクションを呼び出すと、私はAJAXを介した部分ビューを返し、私のコントローラ上IActionResultを持っている:私は次のように私のかみそりビューで<a>タグを入れた場合ボタン

[HttpGet] 
[Route("/propertycoverages/loss")] 
public IActionResult GetNewLoss() 
{ 
    return PartialView("_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>タグに生成されます:href="/propertycoverages/loss"

その作業sが期待どおりになり、部分ビューがページ内に返されます。私は、ボタンを使用しようとする場合は、:

<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メソッドを追加することをお勧めします。あなたは、アクションに戻って呼び出すことができますJSの方法で

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

は、HTMLを取得し、AJAX呼び出しの成功法ではページ上で横たわっていました。

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

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

こんにちは、サブミットボタンからコントローラーアクションを呼び出す方法は主に3つあります。

ウェイ1:

@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コールをしてページに留まるときに、私のボタンがタイプ= "submit"であるとは思えません。私は、デレクが上記で提案したものに似た何かをしてJSメソッドを付け加える必要があると思います。ありがとうございました。 –