この種の質問をする人はたくさんいると思いますが、私はそれをどのように表現すればよいかわかりません.
説明してみます。デバイスが IP アドレスを持つイーサネット ネットワークをモデル化する作業を行っています。システム全体で一意性を確保するために、IP とサブネットが別のテーブルに格納されるように、エンティティ フレームワーク モデルをセットアップしました。
必要な IP がドロップダウン リストにない場合、ユーザーがデバイスとそれに関連付けられた IP を同時に作成できるようにしたいと考えています。
デバイス ページで IP アドレス ページ RenderPartial の一部を設定すると、次のエラーが発生します。
ここに質問があります。このエラーを修正するにはどうすればよいですか。
ディクショナリに渡されたモデル アイテムのタイプは です
PcnWeb.Models.Device
が、このディクショナリにはタイプ のモデル アイテムが必要PcnWeb.Models.IPAddress
です。
ここに私のモデルがあります:
IP アドレス モデル:
namespace PcnWeb.Models
{
public class IPAddress
{
public virtual ICollection<Device> Devices { get; set; }
[Key]
public int ipAddressRecId { get; set; }
public Nullable<int> ipOctet1 { get; set; }
public Nullable<int> ipOctet2 { get; set; }
public Nullable<int> ipOctet3 { get; set; }
public Nullable<int> ipOctet4 { get; set; }
public Nullable<int> smOctet1 { get; set; }
public Nullable<int> smOctet2 { get; set; }
public Nullable<int> smOctet3 { get; set; }
public Nullable<int> smOctet4 { get; set; }
}
}
そしてデバイスモデル:
namespace PcnWeb.Models
{
public class Device
{
[Key]
public int deviceRecId { get; set; }
public int ipAddressRecId { get; set; }
[Required, StringLength(64)]
[Unique]
public string Name { get; set; }
[StringLength(256)]
public string Comment { get; set; }
public virtual IPAddress IPAddress { get; set; }
}
}
関連付けられたデバイス作成ページとインライン IP アドレス作成ページを用意するのはかなり簡単だと思っていたでしょう。
デバイス ページは次のとおりです。
@model PcnWeb.Models.Device
@{
ViewBag.Title = "Create a Device";
}
<h2>Create</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Device</legend>
<div class="editor-label">
@Html.LabelFor(model => model.ipAddressRecId, "IPAddress")
</div>
<div class="editor-field">
@Html.DropDownList("ipAddressRecId", String.Empty)
@Html.ValidationMessageFor(model => model.ipAddressRecId)
</div>
@{
Html.RenderPartial("~/Views/IP_Address/_Create.cshtml");
}
<div class="editor-label">
@Html.LabelFor(model => model.Name, "Name")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Comment, "Comment")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Comment)
@Html.ValidationMessageFor(model => model.Comment)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
IP アドレスの一部は次のとおりです。
編集:申し訳ありませんが、これを含めるのを忘れていました
@model PcnWeb.Models.IPAddress
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>IPAddress</legend>
<div class="editor-label">
@Html.LabelFor(model => model.ipOctet1, "ipOctet1")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ipOctet1)
@Html.ValidationMessageFor(model => model.ipOctet1)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ipOctet2, "ipOctet2")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ipOctet2)
@Html.ValidationMessageFor(model => model.ipOctet2)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ipOctet3, "ipOctet3")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ipOctet3)
@Html.ValidationMessageFor(model => model.ipOctet3)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ipOctet4, "ipOctet4")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ipOctet4)
@Html.ValidationMessageFor(model => model.ipOctet4)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.smOctet1, "smOctet1")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.smOctet1)
@Html.ValidationMessageFor(model => model.smOctet1)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.smOctet2, "smOctet2")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.smOctet2)
@Html.ValidationMessageFor(model => model.smOctet2)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.smOctet3, "smOctet3")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.smOctet3)
@Html.ValidationMessageFor(model => model.smOctet3)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.smOctet4, "smOctet4")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.smOctet4)
@Html.ValidationMessageFor(model => model.smOctet4)
</div>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
以上のことから、私には素晴らしいように見えます。検証はクライアント側で機能します。ドロップダウン リストから新規を選択しない限り、部分的な IP アドレスを非表示にする JavaScript を作成する必要があります。
もう一度質問です。このエラーを修正するにはどうすればよいですか。
ディクショナリに渡されたモデル アイテムのタイプは です
PcnWeb.Models.Device
が、このディクショナリにはタイプ のモデル アイテムが必要PcnWeb.Models.IPAddress
です。