1

私はしばらくの間asp.net mvcをやっていて、最近このtechdays tutorialに出会いました。

これは非常に興味深いように思えましたが、似たようなことをどのように始めればよいのか、ちょっと混乱しました。

現在、私はで作られたWebアプリケーションを持っています

1.  Jquery
2.  Asp.net mvc 3 razor
3.  Nhibernate 

私のアプリケーションは、基本的にいくつかのタブを持つ 1 つのページであり、すべてが ajax と jquery モデル ダイアログによって制御されます。

私は自分のもののためにパターン化されたこれに従いました

View -> View Model -> Controller -> Service layer (別のライブラリ内) -> nhibernate

[HttpGet]
public ActionResult Courses()
{
    // get all courses back from service layer
    // automap domain results to view model
    return View(vm);
}

[HttpPost]
public ActionResult CreateCourse(CourseFormViewModel vm)
{
   // check if data meets basic validation
    if (ModelState.IsValid)
    {
       //map back to domain object
        // send to service layer
        // return data back view through json.

        return Json(data);

    }
    // return errors back to server
    return Json(wrapper);
}

// 基本的な検証を含むビュー モデル

   public class CourseFormViewModel
    {
        public int CourseId { get; set; }

        [Required(ErrorMessage = "Course name is required")]
        [StringLength(40, ErrorMessage = "Course name cannot be this long.")]
        public string CourseName { get; set; }
    }

// 意見

私のビューには、ビュー モデルを使用する厳密に型指定された HTML ヘルプがほとんど含まれています。

// Javascript

前述したように、私は多くの Ajax を使用しています。ほとんどの場合、serliazeArray を使用してから、データをコントローラの Action Result(CreateCourse) にポストし、次にビュー モデルの値をバインドします。

// サービス層

私のサービス レイヤーでは、いくつかのビジネス ロジックを実行し、必要に応じて nhibernate を使用してデータベースに保存します。必要に応じてドメイン転送オブジェクトを作成します。それ以外の場合は、ドメイン オブジェクトを使用します。

私は最近、jquery のモバイルと電話のギャップを調べていました。このテクノロジーを使用するプロジェクトに参加したのですが、非常に便利なようでした。私はasp.net mvcに非常に精通しているので、ミックスでmvcを使用できるかどうかを調べ始めたとき、この投稿の上部に投稿したビデオに出くわしました。

たとえば、私が現在作成している個人的なプロジェクトを見て、それのモバイル バージョンを作成したい場合、アプリケーションは、データを表示する際にまったく異なるものにする必要があります。ユーザー。

たとえば、私の Web アプリケーションには、すべてを表示するために多くのスペースが必要なだけのテーブルがあり、おそらくモバイルでは見栄えがよくありません。これにより、テーブルをトリミングするか、別の表示方法を考えなければならなくなります (おそらく私はそうするでしょう)。

Steve が作成したものがすべてのモバイル デバイスで動作するという事実が気に入っています。彼が行っていることに似たものを試してみたいと思っていますが、私が作成するバージョンはモバイル デバイスとおそらく小さなタブレット用です。

1024 以上の解像度をサポートできる他のすべてのものは、現在の Web アプリケーションを使用する必要があると思います。

どこから始めればいいのか、自分が使っているものに合わせる方法がわからないだけです。

  1. 彼は webapi と Entity フレームワークを使用していますが、これを nhibernate で機能させるにはどうすればよいですか?

  2. ビューモデルはもう使わないのですか? 彼は自分のドメイン モデルを接続して、それをすべてビューに送信したようです。私はビューモデルが好きなので、それについてあまり夢中ではありません。

  3. 彼は Knockout.js と、データをサーバーに送り返すために使用するボタンへのバインドなど、すべてのバインド要素を使用します。それはいいことですが、jquery ダイアログや独自のボタンを生成するものを使用している場合はどうなりますか。これらの場合、どのようにノックアウトをフックしますか?

  4. 彼は自分のプロジェクトを取り、phonegap のようなものを使ってそれを市場に出すことができると述べています。phone gap は html/javascript/css しかサポートしていないので、彼が asp.net mvc コードを使用している場合、どうすればそれができるでしょうか?

4

1 に答える 1

0

ポイント#3に関して。jqQueryダイアログボックスでKnockoutを問題なく使用しています。まず、ダイアログで作成されたボタンにデータバインディングを添付することはできません。本当に必要かどうかわかりません。ダイアログ ボックスのボタンは、クリック イベント ハンドラーとして機能します。これらのハンドラーでは、バインドされたビュー モデルに対して必要なことをすべて行うことができます。


編集http://jsfiddle.net/ex5Qy/3/ にデモを置きました

覚えておくべきことの 1 つは、Knockout が何をするように設計されているかということです。ビューモデルを html 要素にバインドします。それで全部です。ページで必要なことを実行するには、残りの通常のロジックがすべて必要です。

于 2012-06-02T12:45:06.977 に答える