Asp.net mvc 4 MVC4中的非必填字段
我可以在razor视图中没有必填字段吗 我有下面的视图,我希望隐藏字段不是必填字段。 目前它被视为强制性的,并且我的模型状态为false 请再见Asp.net mvc 4 MVC4中的非必填字段,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我可以在razor视图中没有必填字段吗 我有下面的视图,我希望隐藏字段不是必填字段。 目前它被视为强制性的,并且我的模型状态为false 请再见 @using P.M.O @model O @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>Create a New O</legend> <div class="editor-labe
@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>
}
使用P.M.O
@模型O
@使用(Html.BeginForm()){
@Html.ValidationSummary(true)
创建一个新的O
@LabelFor(model=>model.C)
@TextBoxFor(model=>model.C,新的{@class=“txt”})
@Html.ValidationMessageFor(model=>model.Caption)
@LabelFor(model=>model.N) @TextBoxFor(model=>model.N,新的{@class=“txt”}) @Html.ValidationMessageFor(model=>model.N)
@LabelFor(model=>model.D) @TextBoxFor(model=>model.D,新的{@class=“txt”}) @Html.ValidationMessageFor(model=>model.D)
@Html.HiddenFor(model=>model.P.Cr) } 型号:
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; }
}
}
使用系统;
使用System.Collections.Generic;
使用System.ComponentModel.DataAnnotations;
使用System.ComponentModel.DataAnnotations.Schema;
名称空间P.M.O
{
[可序列化]
公共部分O类
{
/***建造商(s)***/
公共事务主任()
{
}
公共事务主任(P obj)
:此()
{
P=obj;
}
/***公众成员***/
[键,显示(Name=“Id”)]
公共int PartyId{get;set;}
/*丰满*/
公共字符串C{get;set;}
公共字符串N{get;set;}
公共字符串D{get;set;}
/*可审计*/
[未映射,脚手架柱(假)]
已创建公共System.DateTimeOffset
{
获取{return P.C;}
设置{P.C=value;}
}
/*导航属性*/
///
///第三方外键:PartyId
///组织是党的亚类型
///
公共虚拟P{get;set;}
}
}
您应该将创建的属性定义为可为空的日期时间偏移量
:
/* IAuditable */
[NotMapped, ScaffoldColumn(false)]
public System.DateTimeOffset? Created
{
get { return Party.Created; }
set { Party.Created = value; }
}
编辑:并考虑到参与方
属性可能为空
:
public System.DateTimeOffset? Created
{
get
{
return Party == null ? null : Party.Created;
}
set
{
if (Party == null)
{
return;
}
else
{
Party.Created = value;
}
}
}
您应该将您的创建的
属性定义为可为空的日期时间偏移量
:
/* IAuditable */
[NotMapped, ScaffoldColumn(false)]
public System.DateTimeOffset? Created
{
get { return Party.Created; }
set { Party.Created = value; }
}
编辑:并考虑到参与方
属性可能为空
:
public System.DateTimeOffset? Created
{
get
{
return Party == null ? null : Party.Created;
}
set
{
if (Party == null)
{
return;
}
else
{
Party.Created = value;
}
}
}
使用自定义模型绑定器创建子对象或父对象。模型绑定器解决了这个问题。使用自定义模型绑定器创建子对象或父对象。模型绑定器解决了这个问题。请也发布您的模型。发布模型类..thankuI假设model.Party.Created
字段是DateTime
字段。如果不希望它是必需的,则应将其声明为可为空的DateTime
字段:public DateTime?已创建{get;set;}
也请发布您的模型。已发布模型类..谢谢假定model.Party.Created
字段是DateTime
字段。如果不希望它是必需的,则应将其声明为可为空的DateTime
字段:public DateTime?创建{get;set;}
这实际上是数据库中的必填字段。我们对它有一个默认的约束,我们也在工厂类中处理它。有些字段如Created是从父级引用的(请参见上面的模型)。当我创建新组织时,我将没有其关联方,因此我的组织模型在Created属性处失败,引用为空。为了处理这个问题,我在视图中添加了一个隐藏字段,现在它被视为强制性字段,如何解决这个问题?那么,您的属性需要检查Party
是否为null
。我添加了一个替代版本来执行此检查。是否可以查看它是否有效?在get属性中获取和DateTimeOffset之间的转换错误:(上述属性的另一个问题是-im获取以下异常:PartyBiz.dll中发生类型为“System.StackOverflowException”的未处理异常,在检查方获取此异常==Null这实际上是数据库中的一个必填字段。我们对它有一个默认约束,我们也在工厂类中处理它。他re我的问题是组织是一方的子公司。一些像创建的字段是从父公司引用的(请参见上面的模型)。当我创建新组织时,我将不会有其关联方,因此我的组织模型在Created属性处失败,引用为null。为了处理此问题,我在视图中添加了一个隐藏字段,现在它被视为强制性字段,如何解决此问题?嗯,您的属性需要检查方
是否为null
。我已经添加了一个进行此检查的替代版本。您能看看它是否有效吗?在get属性中获取和DateTimeOffset之间的转换错误:(上述属性的另一个问题是-im获取以下异常:PartyBiz.dll中发生类型为“System.StackOverflowException”的未处理异常,在检查方获取此异常==null