Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 从动作中的值设置方法_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 从动作中的值设置方法

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

在Asp.NETMVC中,我有一个创建广告的表单

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
),然后根据请求设置属性值。您不需要任何输入