web-dev-qa-db-ja.com

MVC-ビューからコントローラーを呼び出す

MVCは初めてです

MVCを使用してWebアプリケーションを開発していますが、アプリケーションには1ページしか含まれていません。

したがって、そのビューでは、複数のデータを入力する必要があります。アプリケーションが「ニュースフィード」アプリケーションの場合、最近のニュース、あなたが気に入ったニュース、友達が推奨したニュースなどを入力する必要があるとしましょう。したがって、これらのデータを取得して追加するために、ビューからすべての必要なコントローラーにajax呼び出しを行う必要がありますビューで??

現在、コントローラーにajax呼び出しを行ってデータをフェッチすることでデータを取得できますが、私の理解では、コントローラーはMVCで最初に呼び出され、ビューをレンダリングし、現在使用している方法で呼び出していますコントローラーをビューから戻します。

この方法は正しいですか? MVCでこの結果を達成するための正しいアプローチは何ですか?

コントローラへのAjax呼び出しを使用してデータを取得する必要がある場合、MVCでは何が異なりますか? 3層アプリでは、いくつかのWebメソッドまたはハンドラーをajax呼び出しして、ここでいくつかのデータを返します。アクション結果関数を呼び出して、再びいくつかのデータを返します。

8

はい、このようにajax呼び出しを使用できます

$(document).ready(function () {
            $('#CategoryId').change(function () {
                $.getJSON('/Publication/AjaxAction/' + this.value, {},
                  function (html) {
                      $("#partial").html(html);

                      alert("go");
                  });
            });
        });

次に、コントローラーから部分ビューをロードします。

public ActionResult AjaxAction(int Id)
        {
            if (Request.IsAjaxRequest())
            {
                if (Id== 1)
                {
                    ViewBag.SourceTypeId = new SelectList(db.SourceTypes, "Id", "Title");
                    ViewBag.CityId = new SelectList(db.Cities, "Id", "Title");
                    return PartialView("_CreateStatya");
                }
            }
            return PartialView();
        }
6
Sajeev

使用できます ChildActionOnly

[ChildActionOnly]
public ActionResult GetLatestNews()
{
  //...
  return PartialView("yourView",yourquery);
}

そしてあなたの見解ではそれをこのように呼んでください:

 @Html.Action("GetLatestNews","Home")
3
Sirwan Afifi