2016-07-21 18 views
1

のビューコンポーネント間のモデル、それらのすべてが同じのviewmodelとコントローラシェア、私はいくつかのビューコンポーネントを持っていレイアウトを持つDOTNETコア

を使用しているので、どのように私はすべての間で同じのviewmodelインスタンスを共有するために行うことができますそのうちの?

これが私のレイアウトです:

<!DOCTYPE html> 
<html lang="es"> 
<head prefix="og: http://ogp.me/ns#"> 
    @await Component.InvokeAsync("Metadata", Share-Model) 
</head> 
<body> 
    @await Component.InvokeAsync("Header", Share-Model) 
    <article id="main-content-article"> 
     @await Component.InvokeAsync("Cover", Share-Model) 
    </article> 
    <section id="rest-fold-content"> 
     @RenderBody() 
     <footer id="main-footer"> 
      @await Component.InvokeAsync("Footer") 
     </footer> 
    </section> 

</body> 
</html> 

答えて

3

あなたはほとんどそれを得た:

// inside View Component 
public async Task<IViewComponentResult> InvokeAsync(SharedModel sharedmodel) { ... } 

を* .cshtml内側:

@model MyApp.Models.SharedModel 
... 
    <article id="main-content-article"> 
    @await Component.InvokeAsync("Cover", new { sharedmodel = model }) 
</article> 

匿名クラス内のプロパティがありますのでご注意くださいInvokeAsyncメソッドのパラメータと同じ名前です。しかし、それは明らかにすべてdocumentationに記載されています。

+0

私はレイアウトでこれらのコンポーネントを使用していますが、アプローチはまだドットネットのコアに有効であると思いますか? http://stackoverflow.com/questions/13225315/pass-data-to-layout-that-are-common-to-all-pages/13231752#13231752 –

関連する問題