0

私は決して怠け者ではありませんが、初めての MVC プロジェクトで現在のスプリントがすでに 2 日遅れているため、ビューの追加ウィザードを使用して厳密に型指定されたビューを生成してきましたが、今では ViewData クラスを次のように使用し始めています。モデルを表示すると、ウィザードは、派生した ViewData ではなく、ViewDataBase のフィールドを生成します。

派生した ViewData は実行時にファクトリによって構築されると思います。それが、デザイナー/ウィザードが基本クラスのプロパティしか提供できない理由だと思いますが、これについて何かできることはありますか?

4

1 に答える 1

1

ProfK、

これが私が試したものです(VS 2010、MVC2):

public class ViewDataBase
{
    public int ID { get; set; }
    public string Name { get; set; }
}

public class CustomerViewData : ViewDataBase
{
    public string Address { get; set; }
}

アクションを右クリックし、CustomerViewData を使用して厳密に型指定された詳細ビューを作成しました。以下が生成されます。

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MyApplication.Models.CustomerViewData>" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Index</title>
    </head>
    <body>
        <fieldset>
            <legend>Fields</legend>

            <div class="display-label">Address</div>
            <div class="display-field"><%: Model.Address %></div>

            <div class="display-label">ID</div>
            <div class="display-field"><%: Model.ID %></div>

            <div class="display-label">Name</div>
            <div class="display-field"><%: Model.Name %></div>

        </fieldset>
        <p>
            <%: Html.ActionLink("Edit", "Edit", new { /* id=Model.PrimaryKey */ }) %> |
            <%: Html.ActionLink("Back to List", "Index") %>
        </p>

    </body>
    </html>
于 2010-07-08T17:24:32.870 に答える