1

ラックとサーバーの 2 つのエンティティがあります。各サーバーが親ラックへの外部キーを持っている場所。現在、サーバー作成ビュー内で次のようにドロップダウンリストを使用して、サーバーをラックに割り当てています。サーバー作成アクション メソッドは次のようになります。

public ActionResult Create()
        {
            PopulateViewBagData();

            return View(new ServerJoin() { IsIPUnique = true,
            IsMACUnique = true});
        }

次のようにラックを選択するためのドロップダウンリストを含むサーバー作成ビューの一部:-

@model TMS.ViewModels.ServerJoin
<div>
   <span class="f"> Rack</span>

    @Html.DropDownListFor(model =>model.Server.RackID, ((IEnumerable<TMS.Models.TMSRack>)ViewBag.Racks).Select(option => new SelectListItem {
        Text = (option == null ? "None" : option.Technology.Tag), 
        Value = option.TMSRackID.ToString(),
        Selected = (Model.Server != null) && (option.TMSRackID == Model.Server.RackID)
    }), "Choose...")
    @Html.ValidationMessageFor(model =>model.Server.RackID)
</div>

私が実装しようとしているのは、ラック ビュー内にサーバーを追加するためのリンクを追加し、Rack ドロップダウン リストで現在の Rack を選択するように強制することです。

@HTML.Actionlink(“Create Server under this rack”, “Create”,”Server”, new {rackID = Model.RackID},null)

しかし、ユーザーがラックに移動せずにサーバーを作成できることを念頭に置いて、渡されたラック ID をドロップダウン リストで強制的に選択する方法がわかりません。ラック ID は null になりますか??

これを実装する方法はありますか?ブラジル

4

1 に答える 1

1

これを行う方法は次のとおりです。

public ActionResult Create(int? rackID)
{
    var model = new ServerJoin() { IsIPUnique = true, IsMACUnique = true};
    if(rackID.HasValue)
    {
       model.RackID = rackID.Value;
    }
    PopulateViewBagData();

    return View(model);
}

次に、モデルに RackID がある場合、View で if 句を使用して、DropDownList を Hidden 入力に置き換えることができます。

Rack ViewのActionLinkは正しいです。

于 2013-08-16T01:23:49.553 に答える