私はMVCサイトを継承し、2ページを1つにまとめるように求められました。どちらのビューにも独自のビューモデルがあるので、2つのVMを一緒にプッシュする代わりに、パーシャルビューを使用してこの例ではClock_Detailというビュー内のクロックグループを表示できると考えました。しかし、GroupIdにClock Groupのデータを入力させる必要があります。パラメータをMVCパーシャルビューに渡すのに混乱しますか?
私は部分ビューをほとんど使用していないので、これを動作させる方法を混乱させています。 _ClockGroup.cshtml
という名前の新しいビューを作成し、他のページからいくつかの基本コードをコピーして貼り付けて、何か表示できるかどうかを確認しました。
私のClockDetailコントローラに私は以下を追加しました。ここで
public PartialViewResult ClockGroup(int groupId)
{
ClockGroupViewModel vm = DAL.GetClockGroupDetail(groupId);
return PartialView(vm);
}
は_ClockGroup.cshtml
@model site.Models.ViewModels.ClockGroupViewModel
<div class="form-group">
@Html.LabelFor(m => m.GroupId, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(m => m.GroupId, new { htmlAttributes = new { @class = "form-control", disabled = "disabled", @readonly = "readonly" } })
</div>
<div class="form-group">
@Html.LabelFor(m => m.GroupName, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(m => m.GroupName, new { htmlAttributes = new { @class = "form-control", autofocus = "autofocus" } })
@Html.ValidationMessageFor(m => m.GroupName, "", new { @class = "text-danger" })
</div>
これはclock_detail.cshtmlビューからです。次のモデルを使用して、このビューに部分を追加しました。もちろん
@model site.Models.ViewModels.ClockDetailViewModel
@Html.Partial("_ClockGroup")
私はモデルが辞書の種類“site.Models.ViewModels.ClockDetailViewModel”
を通過したが、辞書は時間“site.Models.ViewModels.ClockGroupViewModel"
のモデルアイテムを必要とするというエラーが表示されます。
2つのViewModelを組み合わせて、単一のViewModelだけを使用する必要がありますか?
あなたのパーシャルでコードを書いているところでは、[テンプレート代わりに]を使うべきでしょう(http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor- templates.html)。テンプレートは読みやすく、呼び出すための規約がより簡単に診断できるため、テンプレートが便利です。パーシャルを使用することはまれです。 –
テンプレートを見ていきます。私は、コードの保守性を助けるならば、何かを試すことにいつも開いています。 – Caverman