web-dev-qa-db-ja.com

ASP.NET MVCの場合:Razorビューからコントローラーアクションメソッドを呼び出すすべての可能な方法

これはかなり基本的な質問です。

しかし、教えていただけますか可能なすべてのオプション
Razorビューからアクションメソッド[通常はサーバー側ルーチン]を制御するを呼び出し、
what各シナリオが最適ですで使用する.

ありがとう。

56
dan

方法1:jQuery Ajax Get call(partial page update)を使用します。

データベースからjSonデータを取得する必要がある場合に適しています。

コントローラーのアクションメソッド

[HttpGet]
public ActionResult Foo(string id)
{
    var person = Something.GetPersonByID(id);
    return Json(person, JsonRequestBehavior.AllowGet);
}

Jquery GET

function getPerson(id) {
    $.ajax({
        url: '@Url.Action("Foo", "SomeController")',
        type: 'GET',
        dataType: 'json',
        // we set cache: false because GET requests are often cached by browsers
        // IE is particularly aggressive in that respect
        cache: false,
        data: { id: id },
        success: function(person) {
            $('#FirstName').val(person.FirstName);
            $('#LastName').val(person.LastName);
        }
    });
}

個人クラス

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

方法2:jQuery Ajax Post呼び出しの使用(partial page update)。

データベースにデータを部分的にページ送信する必要がある場合に適しています。

Postメソッドも上記と同じです。Actionメソッドの[HttpPost]を置き換え、jqueryメソッドのpostとして入力します。

詳細については、 ここでMVCコントローラーにJSONデータを投稿する

方法3:フォーム投稿シナリオとして(全ページ更新)。

データベースにデータを保存または更新する必要がある場合に適しています。

表示

@using (Html.BeginForm("SaveData","ControllerName", FormMethod.Post))
{        
    @Html.TextBoxFor(model => m.Text)

    <input type="submit" value="Save" />
}

アクションメソッド

[HttpPost]
public ActionResult SaveData(FormCollection form)
    {
        // Get movie to update
        return View();
   }

方法4:フォーム取得シナリオとして(全ページ更新)。

データベースからデータを取得する必要がある場合に適しています

上記と同じGetメソッドも、Actionメソッドの[HttpGet]とViewのフォームメソッドのFormMethod.Getを置き換えるだけです。

これがあなたのお役に立てば幸いです。

95
Sampath