0

我正在向MVC3做出我的第一個嘗試性步驟,並遇到將模型中的導航屬性轉換爲視圖的問題。在視圖中,似乎導航屬性不允許客戶端驗證,也沒有拾取「顯示」標籤屬性。MVC3導航屬性屬性和客戶端驗證

我有以下簡單的模型:

public class Entity 
{ 
    [Key, 
    ScaffoldColumn(false)] 
    public int Entity_Id { get; set; } 

    [Display(Name = "Entity Name"), 
    Required(ErrorMessage = "Please enter the entity name."), 
    StringLength(150, ErrorMessage = "Please ensure that the entity name is under 150 characters.")] 
    public string Entity_Nm { get; set; } 

    [Display(Name = "Entity Type"), 
    Required(ErrorMessage="Please select the entity type"), 
    ForeignKey("EntityType")] 
    public int EntityType_Id { get; set; } 

    public virtual EntityType EntityType { get; set; } 
} 

它引用這種模式:

public class EntityType 
{ 
    [Key] 
    public int EntityType_Id { get; set; } 

    [Display(Name = "Entity Name"), Required(ErrorMessage="Please enter the entity type name.")] 
    public string EntityType_Nm { get; set; } 
} 

當我創建讀取控制器/寫這個模型我得到以下創建行動和意見形式:

<fieldset> 
    <legend>Entity</legend> 

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

    <div class="editor-label"> 
     @Html.LabelFor(model => model.EntityType_Id, "EntityType") 
    </div> 
    <div class="editor-field"> 
     @Html.DropDownList("EntityType_Id", String.Empty) 
     @Html.ValidationMessageFor(model => model.EntityType_Id) 
    </div> 

    <p> 
     <input type="submit" value="Create" /> 
    </p> 
</fieldset> 

除了Entity Type下拉列表的標籤外, ,由於某些原因,它沒有拾取模型中導航屬性的「顯示」屬性(請注意缺少空間)。此外,儘管使用「必需」屬性修飾了屬性,但未對下拉列表啓用客戶端驗證(服務器端驗證無問題)。客戶端驗證適用於其他字段。請注意,所有必需的.js腳本文件都已包含在內,並且我還將相關的啓用驗證密鑰添加到web.config中。

任何想法我在這裏失蹤?感謝所有人。

回答

0

爲DropDownList的顯示問題,只是嘗試以下

@ Html.LabelFor(型號=> model.EntityType_Id)

+0

感謝swapneel我已經使用瞭解決該問題的標籤,問題是爲什麼使用附加參數生成表單?這意味着如果表單是自動生成的,我將需要記住更改。 –