Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
C# 使用@Html.HiddenFor呈现隐藏表单字段 公共类搜索表单{ //注意:属性可为空 公共日期时间?CurrentViewDate{get;set;} 公共日期时间起始日期{get;set;} } //在控制器中 //[获取] 公共行动结果索引() { } //[张贴] 公共行动结果索引(SearchForm formModel) { 如果(formModel.CurrentViewDate==null) formModel.CurrentViewDate=DateTime.Now.AddDays(1d); 其他的 formModel.CurrentViewDate=formModel.CurrentViewDate.AddDays(1d); formModel.StartDate=DateTime.Now; } //鉴于 @Html.HiddenFor(c=>c.CurrentViewDate)。_C#_Asp.net Mvc 3_Nullable_Datetime Format - Fatal编程技术网

C# 使用@Html.HiddenFor呈现隐藏表单字段 公共类搜索表单{ //注意:属性可为空 公共日期时间?CurrentViewDate{get;set;} 公共日期时间起始日期{get;set;} } //在控制器中 //[获取] 公共行动结果索引() { } //[张贴] 公共行动结果索引(SearchForm formModel) { 如果(formModel.CurrentViewDate==null) formModel.CurrentViewDate=DateTime.Now.AddDays(1d); 其他的 formModel.CurrentViewDate=formModel.CurrentViewDate.AddDays(1d); formModel.StartDate=DateTime.Now; } //鉴于 @Html.HiddenFor(c=>c.CurrentViewDate)。

C# 使用@Html.HiddenFor呈现隐藏表单字段 公共类搜索表单{ //注意:属性可为空 公共日期时间?CurrentViewDate{get;set;} 公共日期时间起始日期{get;set;} } //在控制器中 //[获取] 公共行动结果索引() { } //[张贴] 公共行动结果索引(SearchForm formModel) { 如果(formModel.CurrentViewDate==null) formModel.CurrentViewDate=DateTime.Now.AddDays(1d); 其他的 formModel.CurrentViewDate=formModel.CurrentViewDate.AddDays(1d); formModel.StartDate=DateTime.Now; } //鉴于 @Html.HiddenFor(c=>c.CurrentViewDate)。,c#,asp.net-mvc-3,nullable,datetime-format,C#,Asp.net Mvc 3,Nullable,Datetime Format,但是,当我单击submit时,值确实会增加,但hidden for字段会保留上一个值,并且它显示正确值的唯一方式是 如果在@Html.HiddenFor(c=>c.CurrentViewDate.Value)上执行此操作,则 重新发布formModel.CurrentViewDate具有空值,因为绑定名称不同 有什么想法吗?感觉它从StartDate属性而不是CurrentViewDate属性中获取日期时间值如果要修改它,需要从ModelState中删除该值: public class Sear

但是,当我单击submit时,值确实会增加,但hidden for字段会保留上一个值,并且它显示正确值的唯一方式是 如果在@Html.HiddenFor(c=>c.CurrentViewDate.Value)上执行此操作,则 重新发布formModel.CurrentViewDate具有空值,因为绑定名称不同


有什么想法吗?感觉它从StartDate属性而不是CurrentViewDate属性中获取日期时间值

如果要修改它,需要从ModelState中删除该值:

public class SearchForm {

     //Note: Property is nullable 
     public DateTime? CurrentViewDate {get;set;}       
     public DateTime  StartDate {get;set;}
}

//In the controller     
//[GET] 
public ActionResult Index()
{
}

//[POST]    
public ActionResult Index(SearchForm formModel)
{
     if(formModel.CurrentViewDate == null)            
        formModel.CurrentViewDate = DateTime.Now.AddDays(1d);
     else
        formModel.CurrentViewDate = formModel.CurrentViewDate.AddDays(1d);

    formModel.StartDate = DateTime.Now;   

}


//In view
@Html.HiddenFor(c => c.CurrentViewDate).
<input id="SearchForm_CurrentViewDate" name="SearchForm.CurrentViewDate" 
       type="hidden" value="5/25/2012 11:59:59 PM" />
<input type="submit" name="btnNext" id="btnNext" value="Go Increment" />
您需要这样做的原因是因为所有Html帮助程序,如TextBoxFor、HiddenFor、CheckBoxFor。。。绑定其值时,首先查看ModelState,然后查看模型。这种行为是故意的。因此,因为在您的POST操作中,ModelState(与请求一起发送的)中已经有一个值,所以正在使用的就是这个值

每次尝试在POST controller操作中修改视图模型上的某些属性,并期望此更改反映在值中时,不要忘记ModelState

public ActionResult Index(SearchForm formModel)
{
    ModelState.Remove("CurrentViewDate");

    if(formModel.CurrentViewDate == null)            
    {
        formModel.CurrentViewDate = DateTime.Now.AddDays(1d);
    }
    else
    {
        formModel.CurrentViewDate = formModel.CurrentViewDate.AddDays(1d);
    }

    return View(model);
}