0

私のアクションは、ビューに渡される厳密に型指定されたビューデータを作成します。

ビューで、Model を render 部分メソッドに渡します。

public ActionResult Index()
{
            ViewDataForIndex vd = new ViewDataForIndex();

            vd.Users = Users.GetAll();

            return View(vd);
}


public class ViewDataForIndex: ViewData
    {
          public IList<User> Users {get;set;}

    }

ビューに表示されます:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ViewDataForIndex>" %>

<% Html.RenderPartial("~/controls/blah.ascx", ViewData.Model); %>

そしてblah.ascxで:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
  1. 自分のモデルに今すぐアクセスするにはどうすればよいですか?
  2. ViewUserControl 用に厳密に型指定されたクラスを作成したい場合、どうすればよいでしょうか? から継承?
4

3 に答える 3

0

1つ:ascxの内部:

   <%= Model.YourProperty %>

2:ViewUserControlに型引数を指定します。

   <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>
于 2009-12-15T23:32:29.163 に答える
0

@jfarの2番目のアプローチは、より複雑なモデルをビューに渡すことにした場合に簡単に変更できるため、より気に入っています。

したがって、複数のプロパティやより多くの子オブジェクトを持つクラスを渡すことができます。

ここでオブジェクトから継承する場合は、複雑なオブジェクトから継承して1つのコードを変更し、新しいプロパティを追加するだけで完了です。

于 2009-12-15T23:59:31.090 に答える
0

より具体的には、jfarの答え:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ViewDataForIndex>" %>

親ページに type のモデルがある場合ViewDataForIndex、同じモデルで子を呼び出すと、ViewData.Modeltype のオブジェクトも渡されますViewDataForIndex

于 2009-12-16T00:03:06.997 に答える