0

这里提到了我的实际问题。 在动态视图中隐藏模型的属性

为了解决这个问题,我已经覆盖了答案中提到的 object.cshtml。

但是,当我这样做时,我使用 UIHints 呈现的下拉菜单不起作用。代替下拉菜单,只显示 False、False False(False 数等于我的视图数据中的列表项数)。

我不确定这里发生了什么,有人可以告诉我发生了什么吗?

在我的控制器中:

        ViewData["PartyRoleTypeId"] = (IEnumerable<SelectListItem>)PartyRoleTypeRepo.All()
          .ToList()
          .Select(p => new SelectListItem { Value = p.PartyRoleTypeId.ToString(), Text = p.Caption, Selected = p.PartyRoleTypeId == obj.PartyRoleTypeId });

        ViewData["PartyId"] = (IEnumerable<SelectListItem>)PartyRepo.All()
          .ToList()
          .Select(p => new SelectListItem { Value = p.PartyId.ToString(), Text = p.Organization.Caption, Selected = p.PartyId == obj.PartyId });

我在 shared/editortemplates/DropDownList.cshtml 中的下拉编辑模板

@{
var fieldName = ViewData.ModelMetadata.PropertyName;
 }
 @Html.DropDownList("",(IEnumerable<SelectListItem>)ViewData[fieldName], "Choose..." ,  new { @class ="combo"})

对象.cshtml

@functions
{
bool ShouldShow (ModelMetadata metadata)
{
    return metadata.ShowForEdit
        && metadata.ModelType != typeof(System.Data.EntityState)
        && !metadata.IsComplexType
        && !ViewData.TemplateInfo.Visited(metadata);
}
}

@if (ViewData.TemplateInfo.TemplateDepth > 1)
{
if (Model == null)
{
    @ViewData.ModelMetadata.NullDisplayText
}
else
{
    @ViewData.ModelMetadata.SimpleDisplayText
}
}
else
{
//ViewData.Clear();

foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => ShouldShow(pm)))
{
    if (prop.HideSurroundingHtml)
    {
        @Html.Editor(prop.PropertyName)
    }
    else if (prop.DisplayName == "Id")
    {
        <div></div>   
    }
    else if (!string.IsNullOrEmpty(Html.Label(prop.PropertyName).ToHtmlString()))
    {
        <div class="editor-label">@Html.Label(prop.PropertyName)</div>
    }
    <div class="editor-field">@Html.Editor(prop.PropertyName) @Html.ValidationMessage(prop.PropertyName, "")</div>
}

}

4

1 回答 1

0

将我的下拉值保存在 ViewData 或 ViewBag 中存在一些问题。当我使用这些时,对于 prartyroletypeid,它无法识别 UIHint dropdownlist.cshtml。它仍然指的是object.cshtml。相反,我将下拉数据保存在 TempData 中,一切正常。

但不确定我是否可以在这种情况下使用 TempData。

有任何想法吗???

于 2013-07-26T09:40:30.067 回答