1

我有两个实体机架和服务器。每个服务器都有一个指向父机架的外键。目前我正在将服务器分配给机架,在服务器创建视图中使用如下下拉列表。服务器创建操作方法如下所示:-

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>

我要实现的是,在机架视图中,我想添加一个链接以添加服务器,并强制机架下拉列表选择当前机架,例如:-

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

但是我不确定如何强制下拉列表选择通过的 rackID,记住用户仍然可以创建服务器而不去 Rack,rackID 将为空?

知道如何实现吗?BR

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,您可以使用 if 子句将 DropDownList 替换为隐藏输入。

您的ActionLink机架视图中的 是正确的。

于 2013-08-16T01:23:49.553 回答