0

User View Controlコードビハインドはありません。では、どのようにeventsof 要素を作成すればよいのでしょうか?

MVCのコントロールのロジックを理解したい...

4

5 に答える 5

7

MVC にはユーザー コントロールがないため、コントロールのロジックを気にする必要はありません。MVC にはポストバックはありません。MVC には ViewState はありません。MVC にはイベントはありません。

モデルがあります:

public class MyViewModel
{
    public string Name { get; set; }
}

モデルを操作するコントローラー:

public class HomeController: Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel
        {
            Name = "John"
        });
    }
}

モデルに含まれるデータをレンダリングするビュー:

@model AppName.Models.MyViewModel
<div>@Model.Name</div>

ビューがコントローラに何かを呼び出す必要がある場合、PostBacks やイベントを使用しなくなりました。GET リクエストを送信するためのアンカー リンクや POST リクエストを送信するためのフォームなど、標準の HTML アーティファクトを使用します。

例:

@Html.ActionLink("click me", "Foo", new { param = "123" })

param=123クエリ文字列パラメーターとして渡す Foo コントローラー アクションへのアンカー リンクを生成します。

<a href="/home/foo?param=123">click me</a>

そして以下:

@using (Html.BeginForm("Foo", "Home"))
{
    @Html.TextBoxFor(x => x.Name)
    <input type="submit" value="OK">
}

Foo コントローラ アクションにいくつかの情報を POST できるようにする HTML フォームを生成します。

<form action="/Home/Foo" method="post">
    <input type="text" id="Name" name="Name" value="" />
    <input type="submit" value="OK" />
</form>

ASP.NET MVC を学習するための多くのチュートリアルとビデオを含む有用なリソース:

于 2011-01-26T22:52:58.747 に答える
1

個人的にはコントローラーでロジックを実行するか、コントローラーに作業を行うビジネスロジッククラスを呼び出させます。コントローラーはビューを返します。モデルをコントローラーからビューに渡し、モデルをビューから部分ビューに渡します (MVC はユーザー コントロールに相当します)。

これは、ビュー/部分ビューにロジックがないことを意味し、非常にクリーンな方法でモデルをレンダリングできることを意味します

これは意味がありますか?

于 2011-01-26T22:54:04.050 に答える
0

ITTはあなたを助けるべきです

http://www.asp.net/mvc/videos/how-do-i-work-with-data-in-aspnet-mvc-partial-views

于 2011-01-26T22:58:41.613 に答える
0

また、Scott Hanselman の NerdDinner プロジェクトもお勧めします。ASP.NET MVC フレームワークを学ぶのに最適なプロジェクトです。

Darin Dimitrov's answer も読んで読み直してください。MVC でデータを処理する方法の基本が含まれています。

于 2011-01-26T23:22:25.333 に答える
0

WebForms ページのライフサイクルに執着しすぎているようです。

MVC の表面上のプログラミング方法論は、WebForms とは根本的に異なります。これは、Ruby On Rails に似ています。

MVC の学習に役立つリソースは次のとおりです。

MVC の公式 Web サイト

Scott Hanselman の NerdDinner プロジェクト

于 2011-01-26T22:56:20.223 に答える