2012-01-17 6 views
0

私は部分ビューと関連するビューモデルに特有の問題があります。 これは、コントローラ内の関連する関数は次のようになります。ビューモデルが指定されているときにビューが見つかりません

using MyProject.ViewModels; 

[ChildActionOnly] 
public PartialViewResult ShowMyView(int id) 
{ 
    return PartialView(new MyModel() { ModelID = id }); 
} 

そして、私は次のように定義されたビューモデルを持っている:

namespace MyProject.ViewModels 
{ 
    [Bind(Exclude = "ModelID")] 
    public class MyModel: IValidatableObject 
    { 
    public MyModel() 
    { 
     Count = 1; 
    } 

    [Required] 
    [HiddenInput(DisplayValue = false)] 
    public int ModelID { get; set; } 

    [Required] 
    [Range(1, 9999)] 
    public int Count { get; set; } 

    public IEnumerable<ValidationResult> Validate(
        ValidationContext validationContext) 
    { 
     if (ModelID <= 0) 
      yield return new ValidationResult("Model ID missing", 
              new[] { "ModelID" }); 

     if (Count <= 0) 
      yield return new ValidationResult("Count cannot be zero", 
              new[] { "Count" }); 
    } 
    } 
} 

私はShowMyViewと呼ばれる共有ビュー/で定義されたビューを持っています。 cshtml。 奇妙なことは、(図を示している)私は

@inherits WebViewPage 

としてそれを定義するときに、それが正常に動作していることですが、私は

@inherits WebViewPage<MyProject.ViewModels.MyModel> 

だけでなく、実際のモデルを定義するとき、それはビューが表示されませんし、ビューが見つからないというエラーを表示します(存在するViews/Shared/ShowMyView.cshtmlパスを含む、参照された場所のリストが表示されます)。

これは、プロジェクトで使用するモデルクラスのいずれかで発生するようです。私がここで間違っていることの手がかりは?

+0

あなたはinherits'ディレクティブ@ '使用する必要がある理由は次のとおりです。また、あなたはidパラメータを渡しているこの子アクションをレンダリングしているときことを確認してください?デフォルトでは、ビューはViewsフォルダのweb.configに定義された ''を使用します。 –

+0

いいえ、私は '@ model'も使用しました。実際、これは私が最初に使っていたものです。そして、それが違いを生むかどうかを知るために '@ inherits'を試しました。 –

+0

これはプラグインとしてこれを書いている他のMVCシステムではローカルな問題です。 –

答えて

1

は交換してみてください:

@inherits WebViewPage<MyProject.ViewModels.MyModel> 

で:

@model MyProject.ViewModels.MyModel 

あなたShowMyView.cshtmlビューの上部に。通常は2つは同等ですが、あなたは決して知らないでしょう。

@Html.Action("ShowMyView", "SomeController", new { id = "123" }) 
+0

いいですが、@modelを使ってみましたが、何の違いもありませんでした。そして、はい、私は私のHtml.Action呼び出しにidパラメータを含めました。 –

+0

@TomvanEnckevort、うーん、それは変だ。問題を再現できません。あなたはステップの例を記入して再製作することができますか? –

関連する問題