1

私は MVC を使用していますが、1 つの質問があります。連結されたビュー モデル プロパティを構築するためのベスト プラクティスは何ですか? FullName次の 2 つの場所に連結された field( ) を作成できます。

  1. このようなモデルビューで

     public class User
        {
           public string FirstName { get; set; }
           public string LastName { get; set; }
           public string FullName { get {return FirstName+LastName;} }  
        }
    
    
    public ActionResult Users()
    {
     var model = new User
                 {
                    FirstName = "Tomas",   
                    LastName = "Saint",     
                  });
    
     return View(model);
    }
    
  2. コントローラー内

    public class User
    {
       public string FullName { get; set; }
    }
    
    
    public ActionResult Users()
    {
     var model = new User
                 {
            FullName = "Tomas" + "Saint";   
                  });
    
     return View(model);
    }
    
4

2 に答える 2

3

計算/関数がビューの書式設定に関連付けられている場合は、先に進んで機能をビューモデルに配置します.フルネームプロパティのように、これはビューモデルで正しいです. ただし、ドメインロジックを必要とする関数/計算がある場合、ビューモデルがその場所であり、再利用性のためにドメインモデルに存在するか、ビジネスロジックレイヤーのどこかに存在するとは思いません。

簡単な答えは、ビュー モデル内のビューの書式設定、他の場所のドメイン ロジックです。

于 2013-03-08T08:34:10.913 に答える
1

表示目的で値を計算するメソッドまたはプロパティ (例の FullName など) は、ViewModel に属します。これにより、データをビューに渡すクリーンでタイプセーフな手段が得られ、ビューが一貫した方法でプロパティにアクセスできるようになります。このアプローチには、特定の ViewModel が使用されている場所ならどこでもプロパティを使用できるという利点もあります。プロパティをコントローラーに追加する場合は、そうではありません。

Razor 構文を使用した以下の例:

@model MvcApplication.Models.User
...
<div class="editor-label">
    @Html.LabelFor(m => m.FullName)
</div>
<div class="editor-field">
    @Html.DisplayFor(m => m.FullName)
</div>
于 2013-03-08T08:35:05.300 に答える