Asp.net mvc 从动作中的值设置方法
在Asp.NETMVC中,我有一个创建广告的表单Asp.net mvc 从动作中的值设置方法,asp.net-mvc,Asp.net Mvc,在Asp.NETMVC中,我有一个创建广告的表单 public class AdvertisementViewModel { public AdvertisementViewModel() { this.StartTime = DateTime.Now; } public int Id { get; set; } public DateTime StartTime { get; set; } // other properties
public class AdvertisementViewModel
{
public AdvertisementViewModel()
{
this.StartTime = DateTime.Now;
}
public int Id { get; set; }
public DateTime StartTime { get; set; }
// other properties
}
StartTime不是来自用户,但我在构造函数中设置了它
在我看来,用户将填充所有输入字段,并将模型发布到控制器的ActionMethod,模型将保存在那里
现在为了将StartTime传递给ActionMethod,我将它作为一个隐藏字段添加到视图中,以便将其发回
是否有更好的方法设置开始时间,因为我在视图中并不真正需要它?
我知道我可以在post action方法中设置,但我有不同的广告类型,我必须在多个位置设置开始时间。我的所有播发类型都是从定义StartTime的基类派生的。它已经在构造函数中,因此当
DefaultModelBinder
在POST方法中初始化模型时,它将被设置。您可以尝试以下操作:public DateTime StartTime{get{return DateTime.Now;}
使用[Bind(Exclude=“StartTime”)]
。如果视图中根本不需要此属性,也可以应用[IgnoreDataMember]
和[JsonIgnore]
。@Stephen Muecke:谢谢,构造函数在Get方法中创建模型。然后我显示视图,它将发回模型。你是说如果我删除隐藏字段,默认模型绑定器仍然会将值传递给post方法吗?是的,DefaultModelBinder
首先初始化模型(使用Activator.CreateInstance()
)-调用构造函数,并将StartTime
的值设置为DateTime.Now
),然后根据请求设置属性值。您不需要任何输入