2013-11-10 19 views
5

MVC 4を使用していますが、私のビューをちょっと整理したいと思っていましたので、複数の部分ビューを作成し、MVC4ネストされた@ Html.RenderPartial()を使用するとコンパイラエラーメッセージがスローされます:CS1502

レンダリングされているビューの表示数が@Html.RenderPartial('path\to\my\partialView.cshtml')の場合は正常ですが、このpartialView.cshtmlの内部にさらに@Html.RenderPartial('path\to\my\otherPartialView.cshtml')が定義されていると失敗します。

iはれるrenderPartialまたは部分的な方法

error CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments 
error CS1503: Argument 1: cannot convert from 'void' to 'System.Web.WebPages.HelperResult' 

私たちは私の大きなビューのマークアップファイルを整理するために達成することができますMVC4で方法はありますいずれかを使用してと同じようにエラーが出?すなわち、部分的なビューを他の部分的なビューと共に徐々に構成しようとする。

EDIT

ただ、詳細を与えます。

私のモバイルビューは次のようになります。

:私はこのようなコードを持っているビュー - > Shipper-> ManageLoads

このビュー内側:

ファイル:ManageLoads.Mobile.cshtml

場所

<div id="landingPage" ng-show="MenuSelection=='DefaultPage'"> 
      @Html.Partial("~/Views/Shipper/_DashboardPartial.cshtml") 
      <div class='message {{MessageClass}}'> 
     <i class='{{MessageIcon}}'></i> 
     <p>{{Message}}</p> 
      </div> 
     </div> 

この部分は問題なく問題なく動作します。現在、_DashboardPartial.cshtml内に別の部分ビューへの参照がある場合は失敗します。

<div id="warehouseSelection" ng-show="getStep()==1"> 
    {@Html.RenderPartial("~/Views/Shipper/mobilePartials/_MyWarehouse.cshtml");} 
</div> 

これは破壊し、エラーをスローしますが、私はそこに内部の「_MyWarehouse.cshtml」の内容をコピー&ペーストすれば、それが再び動作を開始します。 _MyWarehouse.cshtmlへのパスが正しいことを確認しました。そのため、問題の原因となっているRenderPartialメソッドのネストと関連があると思われます。

よろしく キラン

答えて

16

私が見る最初の問題は、あなたのHtml.RenderPartial構文が間違っているということです。 @はそうのように中括弧の外にする必要があります:Html.PartialHtml.RenderPartialの組み合わせは、ここでいくつかの問題を引き起こしている場合

@{Html.RenderPartial("~/Views/Shipper/mobilePartials/_MyWarehouse.cshtml");} 

第二に、私は疑問に思います。上記の構文でHtml.RenderPartialの両方を使用して、エラーが修正されているかどうかを確認してください。

+1

あなたは私の一日を作った!私はここ数日間、何が起こっているのかを理解せずにこれを苦労していました。 {}の中に間違った場所に@を置いていました。ありがとう – Kiran

2

あなたが好きな、いくつかのオプションがあります。(短い一般的なHTMLコード用)

(またあなたも、 '〜/ビュー/ someControllerの/ etc /に/私/ partialView.cshtml' または一部の共有ビュー「〜/ビューにコードを移動する/ /共有のような根ざしpathesを使用することを検討すべきです....しかし、それはすべてあなたに)。

EDIT:

してくださいは、this articleを見ています。上記の方法をどのように正確に使用すべきかが説明されています。むしろ、このような方法でなければなりません:

@{ Html.RenderPartial("ViewName"); } 

しかし

@Html.Partial("ViewName") 
+0

私はあなたのコメントに完全に従っているとは思わない。これらの関数を部分ビューで呼び出すと、他の部分ビューから構築されますが、エラーが発生します。私は2番目の部分的な部分のビューを1番目の部分的な部分にコピーしてコピーします。 – Kiran

+0

'@ Html.Partial(...)'を問題なく使用しました。 RenderPartialを使用している正確な理由はありますか? – Siim

+0

@Kiranちょっと答えに情報を追加しました。 – Agat

関連する問題