-1

私はフロント エンド開発者であり、MVC 4 にあまり詳しくないため、これが非常にばかげた質問である場合は申し訳ありません。

継承したビューを変更しようとしています - 既にモデルがあるページに動的モデルをコピーしました - 2 つのモデルを宣言することはできないことはわかっていますが、以下をどのように変更すればよいですか?

@model MvcSiteMapProvider.Web.Html.Models.SiteMapNodeModel
@using System.Web.Mvc.Html
@using MvcSiteMapProvider.Web.Html.Models
@using Project.RealTime.LookupService;
@using Project.RealTime.Models;
@model dynamic
@{
    SessionVars session = new SessionVars();
    Account account = null;
    if ((Model != null) && (Model is Account))
    {
        account = (Account)Model;
    }

このビューで両方を使用できるように、モデルと動的モデルを組み合わせる最良の方法は何ですか?

4

4 に答える 4

0

ただ残し@model dynamicて削除してみてください@model MvcSiteMapProvider.Web.Html.Models.SiteMapNodeModel

ただし、厳密に型指定されたモデルで 2 つの別個のビューを使用する方が適切です。コンパイル時にいくつかのエラーを特定し、インテリセンスを表示するのに役立つからです。

私たちのビューで Account が必要な場合は、ViewModel を確認して Account を追加する必要があります。

于 2013-07-10T13:44:48.617 に答える
0

ビューに表示できるモデルは 1 つだけなので、新しいモデルに情報が含まれるようにモデルを変更するのが最善の方法ですdynamic

2 つの適切なオプションがあります。

-既存のモデル クラスを編集し、プロパティを追加します。

- または、既存のモデルを継承します。

public class MyNamespace.MyNewModel : MvcSiteMapProvider.Web.Html.Models.SiteMapNodeModel
    {
         public string Property1 { get; set; }
         /* .... */
    }

ビューでは、新しいビュー モデルのみを参照します。

@model MyNamespace.MyNewModel 
于 2013-07-10T13:46:37.633 に答える
0

必要な動的データをモデルに含めます。モデルは通常、特定のデータ クラスではなく、ビューで使用されるデータのコレクションであるクラスである必要があります。

例えば

public class ControllerActionViewModel
{
    public FooClass Foo;
    public dynamic Foo2;
}

その後

@model Project.Models.ControllerActionViewModel

@Model.Foo2.whatever
于 2013-07-10T13:48:48.980 に答える