で別のviewmodelsを渡す:私は以下のコードの一部を使用してPartialViewを使用して複数のビュー間でフォームを共有しようとしていますpartialview
これは私が
部分ビューを実装するすべてのビュー間で共有したいモデルですnamespace CSharp.Models.ViewModels
{
public class HomeViewModel
{
public string County { get; set; }
public ElectionType? Type { get; set; }
}
}
部分ビューファイルは、次のようになります。
部分ビューを実装するために必要なファイルの一つで@model CSharp.Models.ViewModels.HomeViewModel
@Html.TextBoxFor(model => model.County, new { @class = "form-control" })
@Html.EnumDropDownListFor(model => model.Type, null, new { @class = "form-control"})
、私は次のコードを持っている:
Home View
@model CSharp.Models.ViewModels.HomeViewModel
@using (Html.BeginForm("Index", "Result", new { ViewBag.ReturnUrl }, FormMethod.Get, new { role = "form" }))
{
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.Partial("~/Views/Shared/_PartialViewFile.cshtml", Model)
}
私がページを実行するとき、それは必要なように動作します。
部分図を必要と一つの他のページは、私がViewModelに
Manage View
@model CSharp.Models.ViewModels.HomeManageViewModel
<form >
@Html.Partial("~/Views/Shared/_PartialViewFile.cshtml", Model.HomeViewModel);
</form>
HomeManageViewModel
を使用しています。このビューは、私がManage View
を実行すると、私はこのエラーを取得するこの
public class HomeManageViewModel
{
public HomeViewModel HomeViewModel { get; set; }
public IndexViewModel ManageViewModel { get; set; }
}
のように見えるがあります。
The model item passed into the dictionary is of type 'HomeManageViewModel', but this dictionary requires a model item of type 'HomeViewModel'
私は実際に0を渡しているのでin Manage View
部分的に見ると、はとなります。
ビューモデル変数を部分ビューに渡すにはどうすればよいですか?
レンダリングされた部分図を使用'Manage View'は' HomeManageViewModel'の代わりに 'HomeViewModel'を使います。代わりに 'HomeManageViewModel'にバインドされた' Manage View'ビューの部分ビューを個別に作成することができます。そのため、部分ビューモデルは親ビューページモデルに従う必要があります。 –
サイドノート:エラーメッセージ(https://www.bing.com/search?q=c%23+The+model+item+passed+into+the+dictionary+is+&hl=ja)を検索することをおすすめします。 +型+しかし+この+辞書+は+型+ +型の+ item +を必要とします)、これはStephen Mueckeの素敵な答えと同じ説明を与えました。 –