我有一个View,它根据数据库在加载时加载一些部分视图。到目前为止,它有一个很好的工作,只有一个例外:因为这是数据库的第一种情况,我使用元类将适当的标记添加到模型字段中。当我将所有内容放在一个页面上时,它工作得非常好但是由于我将其分解为部分内容,因此它拒绝识别元类。
到处都有很多不相关的代码,所以我打破了重要的东西(有些名字已被修改以保护无辜者)...
在视图中加载所述部分:
foreach (var p in MyProject.Controllers.UtilityController.GetPViews())
{
@Html.Partial("../Partial/" + p.ViewName, new ViewDataDictionary { { "column", "column" + p.ColumnSize } })
}
元类的主要部分:
namespace MyProject.Models
{
public class MyProjectData_Meta
{
[MetadataType(typeof(MyProjectData_Meta))]
public partial class MyProjectData
{
public class MyProjectData_Meta
{
//Gets and sets and stuff. For example:
[Required(ErrorMessage = "Please enter a first name.")]
[Display(Name = "First Name")]
[UIHint("FloatLabel")]
public string MemberFirstName { get; set; }
}
}
}
}
最后是从所述数据库中提取列表的代码......
public static List<ModuleList> GetPViews()
{
MyProjectEntities pv = new MyProjectEntities();
List<ModuleList> lvl = pv.ModuleLists.OrderBy(s => s.PageOrder).ToList();
return lvl;
}
为了告诉我愚蠢的地方,我还缺少一些明显缺失的细节或者你需要的更多信息吗?
编辑:Doh!忘了放入我的实际视图代码:
@model MyProject.Models.MyProjectData
<div class="@ViewBag.column">
<fieldset id="fsBasic">
<legend>Basic Information</legend>
<div class="editor-label">
@Html.LabelFor(model => model.MemberFirstName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MemberFirstName)
@Html.ValidationMessageFor(model => model.MemberFirstName)
</div>
</div>
回答另一个问题:我知道它没有使用元类,因为LabelFor正在显示&#34; MemberFirstName&#34;而不是&#34;名字&#34;当我没有使用部分类时,它实际上做了什么。