2013-06-19 54 views
0

我的剃鬚刀視圖中可以不需要字段嗎?MVC4中不需要的字段

我有下面的看法,其中我希望隱藏的字段不是必填字段。 目前它被視爲強制性的,並且我的模型狀態爲false。

請問adivse?

@using P.M.O 
@model O 

@using (Html.BeginForm()) { 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>Create a New O</legend> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.C) 
     @Html.TextBoxFor(model => model.C, new { @class = "txt"}) 
     @Html.ValidationMessageFor(model => model.Caption) 
    </div> <br /> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.N) 
     @Html.TextBoxFor(model => model.N, new { @class = "txt"}) 
     @Html.ValidationMessageFor(model => model.N) 
    </div> <br /> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.D) 
     @Html.TextBoxFor(model => model.D, new { @class = "txt"}) 
     @Html.ValidationMessageFor(model => model.D) 
    </div> 
    <br /> 
     @Html.HiddenFor(model=> model.P.Cr) 
     <input type="submit" value="Create" /> 
</fieldset> 
} 

型號:

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 

namespace P.M.O 
{ 
[Serializable] 
public partial class O 
{ 
    /*** Construtor(s) ***/ 
    public O() 
    { 

    } 

    public O(P obj) 
     : this() 
    { 
     P= obj; 
    } 


    /*** Public Members ***/ 
    [Key, Display(Name = "Id")] 
    public int PartyId { get; set; } 


    /* IEntity */ 
    public string C{ get; set; } 

    public string N{ get; set; } 

    public string D{ get; set; } 


    /* IAuditable */ 
    [NotMapped, ScaffoldColumn(false)] 
    public System.DateTimeOffset Created 
    { 
     get { return P.C; } 
     set { P.C= value; } 
    } 

    /* Navigation Properties */ 
    /// <summary> 
    /// Foreign key to Party: PartyId 
    /// Organization is subtype of Party 
    /// </summary> 
    public virtual P P{ get; set; } 

} 
} 
+0

請發佈您的模型。 –

+0

發佈了模型類..thanku – mmssaann

+0

我假設'model.Party.Created'字段是'DateTime'字段。如果你不想要它,你應該聲明它爲可空的DateTime字段:'public DateTime?創建{get;組; }' –

回答

0

使用自定義模型活頁夾創建子對象或父對象。模型聯編程序解決了這個問題。

3

你應該定義你的Created屬性作爲一個可空DateTimeOffset

/* IAuditable */ 
[NotMapped, ScaffoldColumn(false)] 
public System.DateTimeOffset? Created 
{ 
    get { return Party.Created; } 
    set { Party.Created = value; } 
} 

編輯:和包容的事實Party屬性可能是null

public System.DateTimeOffset? Created 
{ 
    get 
    { 
     return Party == null ? null : Party.Created; 
    } 
    set 
    { 
     if (Party == null) 
     { 
      return; 
     } 
     else 
     { 
      Party.Created = value; 
     } 
    } 
} 
+0

這實際上是數據庫中的必需字段。我們有一個約束,它默認它也是我們在工廠類處理。在這裏我的問題是組織是黨的孩子。還有一些像Created這樣的字段被父母引用(請參見上面的模型)。當我創建新的組織時,我將不會有其關聯的組織,因此我的組織模型在創建屬性時失效並引用空引用。爲了解決這個問題,我在視圖中添加了隱藏字段,現在它被視爲強制性的,如何解決這個問題? – mmssaann

+0

那麼,比你的財產需要檢查,看看'黨'是'null'。我已經添加了一個替代版本來做這個檢查。你能看看它是否有效? –

+0

得到和DateTimeOffset之間的獲取屬性:( – mmssaann