0

Server という名前のモデル クラスがあり、次のように新しい ServerToEdit viewModel クラスを作成しました。

public class ServerToEdit
    {
        public Server Server { get; set; }
       [Required]
        public String IPAddress { get; set; }
    }

作成ビューの一部は次のとおりです。

    model TMS.ViewModels.ServerToEdit

    @* This partial view defines form fields that will appear when creating and editing entities *@
     @Html.AntiForgeryToken()
    <div class="editor-label">
        @Html.LabelFor(model => model.Server.CustomerName)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model =>model.Server.CustomerName)
        @Html.ValidationMessageFor(model =>model.Server.CustomerName)
    </div>
    <div class="editor-label">
       IP Address
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.IPAddress)
        @Html.ValidationMessageFor(model => model.IPAddress)
    </div>

IPAddress
<div class="editor-label">
    @Html.LabelFor(model =>model.Server.ILOIP)
</div>
<div class="editor-field">
    @Html.EditorFor(model =>model.Server.ILOIP)
    @Html.ValidationMessageFor(model =>model.Server.ILOIP)
</div>

Create actin メソッドは次のとおりです。

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(Server server, TechnologyIP technologyIP)
        {
           try 
           { 
               if (ModelState.IsValid) 
           {
                repository.InsertOrUpdateServer(server,technologyIP);
                repository.Save();
                return RedirectToAction("Index");
            }

しかし、モデル バインダーはビュー内の IPAddress フィールドを TechnologyIP.IPAddress プロパティにバインドできませんでしたか? technologyIP モデル クラスは次のとおりです。

public class TechnologyIP
    {
        public String IPAddress { get; set; }

        public int ID { get; set; }
    }
4

1 に答える 1

2

一見すると、ビューに渡したモデルが、要求しているモデルと同じではないためだと思います。この行を変更します。

public ActionResult Create(Server server, TechnologyIP technologyIP)

public ActionResult Create(ServerToEdit serverToEdit)

そしてこの行:

repository.InsertOrUpdateServer(server,technologyIP);

repository.InsertOrUpdateServer(serverToEdit.Server, serverToEdit.technologyIP);

乗り方を教えてください。

于 2013-07-25T20:42:54.493 に答える