2017-01-20 10 views
0

私は返すようにしたいビューの種類を指定する必要があり、この
剃刀ファイルを指定すると、それがビューであるか部分ビューであるかをどのように区別できますか?

public ActionResult Step8(AddPropertyStep7ViewModel model) 
     { 
      return View(); 
     } 

のようなコントローラに新しいのActionResultを追加する。
{レイアウト、ビュー、部分ビューで表示}私は私がしたいことを知っています以下のようなファイルを返す
これはStep1.cshtmlです。それがsthのビューか部分ビューかどうかをどのようにして判断するのですか?

@using W.Resources 
@model W.Models.ViewModels.Agent.AddPropertyStep1ViewModel 

@{ 
    Layout = "~/Areas/Agent/Views/Shared/_Layout.cshtml"; 
} 
<div class="side site--dashboard"> ... <div> 

@section scripts 
{ 
    <script> ... </script> 
} 
+2

なぜそれをしたいですか?別の解決策があるかもしれません – Shyju

+0

ありがとうございます。私は質問を編集し、その理由を述べました。 –

+0

'Partial'ヘルパーメソッドを呼び出すと、レイアウトは含まれません。あなたは違う行動をしていますか? – Shyju

答えて

1

パーシャルビューを定義する基本的な方法は、レイアウト= nullを持つことです。

しかし、あなたはあなたのLayoutプロパティに値を持っている、とあなたは、コントローラから次のようなビューを返した場合でも

return PartialView("Your_view_name"); 

それはまだ部分ビュー(それは、マスターページのコンテンツに包まれません)としてレンダリングされます。

MVCは設定より規約で働くように、部分ビューを定義するための規則では、あなたは、ビューのどのようなものにあなたを指定する必要が編集した質問で述べたように、ビュー名は「_」(_MyPartialView.cshtml)

で始めるべきであるということです帰りたいレイアウトを返すだけで何も必要ない場所は必要ありません。上で提案した解決法は、あなたのアクションメソッドからreturn View()またはreturn PartialView()を使用すると完全に動作し、ページをマスターページで表示するのか部分ビューとして表示するのかを決めることができます。

1

ビューはビューです。 「レイアウト」と「部分的」という用語は、ビューがどのように使用されているかを話すのを簡単にしていますが、機能的な違いはありません。つまり、レイアウトはというレイアウトとして使用されるビューです。部分的なものは、という部分としてのみ使用されるビューです。ビューを見て、それが完全に文脈上のものなので、どのタイプのビューであるかを知る方法はありません。

しかし、実際にレイアウトとして機能するためには、どこかで呼び出すことが@RenderBody()である必要があるため、レイアウトは例外です。しかし、これを別のビューの「レイアウト」とは呼ばないビューを引き続き使用することができます。ビューのHTMLは実際にレンダリングされません。返されるのはレイアウトのHTMLだけです。

レイアウト/部分文字にアンダースコアを付けるという規則があります。しかし、それは、プロジェクトツリー内で、ビューファイルについて特別なことがあることを素早く確認する方法に過ぎません。それは必須ではなく、実際にビューについて何が特別なのかについての情報をあなたに与えるものではありません。

あなたの質問は完全に明確ではありません。おそらくあなたの行動からどのタイプのビューが返されるかを指定したいとします。さて、あなたはすでにそれをやっているのです。 View()を返すと、ビューを標準ビューのように扱いたいと言っています。あなたが部分を返すことを望むなら、代わりにPartialView()を返さなければならないでしょう。ただし、返されたビューでレイアウトを使用する必要があることを指定する方法はありません。

関連する問題