0

モデルは太く、ビューは薄くする必要があると言われています。ビジネスロジックをモデル内に配置します(https://stackoverflow.com/questions/235233/asp-net-mvc-should-business-logic-exist -in-controllers) .通常はコントローラー内に LINQ を記述しますが、クエリをモデルに記述する必要がある可能性はありますか?そうであれば、ビューで結果を取得するにはどうすればよいでしょうか?

2 番目の質問

  public ActionResult Index()
  {
            using (NORTHWNDEntities c = new NORTHWNDEntities())
            {

                var x = c.Employees.Count();
                ViewData["count"] = x;

                return View(x);       
            }
    }

これを行うとき、変数 x をビューに渡しますか? ViewDatain Viewにアクセスしてみた

<% ViewData["count"] %>

しかし、それはエラーエラーを出します、これで私を助けることができる人は誰でもありがとう

4

3 に答える 3

2

ビューにの値を表示しようとしている場合はViewData["count"]、次の構文を使用できます。

<%= ViewData["count"] %>

=開始タグの に注意してください。これは

<% Response.Write(ViewData["count"]) %>
于 2012-06-01T17:52:49.943 に答える
2

これを行うためのより良いアプローチがあり、非常に簡単です。ニーズを満たすモデルを作成し、それをビューに渡します。

public class MyModel
{
    public int Count{get;set;}
}

コントローラーは次のようになります

public ActionResult Index()
  {
            using (NORTHWNDEntities c = new NORTHWNDEntities())
            {

                var x = c.Employees.Count();
                var model = new MyModel{Count = x};    
                return View(model);       
            }
    }

次に、厳密に型指定されたビューを作成します

かみそりの構文:

@model MyModel

@Model.Count

ASPX 構文:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Models.MyModel>" %>
<%= Model.Count %>

次のようにすると、コードはさらに改善されます。

public class EmployeeService
{

     public int GetEmployeeCount()
     {
            using (NORTHWNDEntities c = new NORTHWNDEntities())
            {
                var count = c.Employees.Count();                   
                return count;       
            }
     }
}

そしてコントローラーもほとんど変わります:

public ActionResult Index()
  { 
                EmployeeService srvc = new EmployeeService();
                var x = srvc.GetEmployeeCount();
                var model = new MyModel{Count = x};    
                return View(model);   
  }
于 2012-06-02T17:06:42.887 に答える
0

クエリはデータアクセス層にある必要があり、MVCのロジックはモデルではなくコントローラーにあります。

ここでは、MVCを使用した階層化アーキテクチャの例を見つけることができます。

最後に、常にモデルをビューに使用する必要があります。ViewDataを使用してデータを渡さないでください。

于 2012-06-01T17:54:25.427 に答える