私は MVC が初めてで、別のページにリダイレクトせずにコントローラーでコードを実行する方法を知りたいです。
私の見解:
<a href="@Url.Action("DoSomething", "MyController", new { })">
私のコントローラー:
public void DoSomething()
{
...
}
クリックするとコードが実行されますが、空白のビューにリダイレクトされます。どうすればこれを回避できますか?
私は MVC が初めてで、別のページにリダイレクトせずにコントローラーでコードを実行する方法を知りたいです。
私の見解:
<a href="@Url.Action("DoSomething", "MyController", new { })">
私のコントローラー:
public void DoSomething()
{
...
}
クリックするとコードが実行されますが、空白のビューにリダイレクトされます。どうすればこれを回避できますか?
AJAX リクエストを介してアクションを呼び出すことができます。このようなもの:
<a id="doSomething" href="#">click here</a>
また、JavaScript コードでは (デフォルトで MVC プロジェクトで利用できるはずなので、jQuery を使用します):
$('#doSomething').click(function () {
$.get('@Url.Action("DoSomething", "MyController", new { })', function(response) {
// do something with the response?
});
return false;
});
これにより、ページからアクションへの非同期呼び出しが行われます。アクションからの応答はresponse
、JavaScript のコールバック関数の値になります。
編集:このリンクは実際にはリンクではないため、そもそもアンカー タグではないこともお勧めします。このタグを上記の JavaScript コードと組み合わせると、同じ機能が得られます。
<span id="doSomething">click here</span>
CSS でリンクのように動作するようにスタイルを設定できます。
#doSomething {
cursor: pointer;
text-decoration: underline;
}
または、CSS はリンクに対して動作します。