【发布时间】:2018-06-29 12:47:32
【问题描述】:
我的 ajax 表单有问题: 我有这个代码
@using (Ajax.BeginForm("Search", "SyntheseEvt",
FormMethod.Post,
new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST",
UpdateTargetId = "search-results"
}
))
{
<div class="row">
@{
CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
<div class="col-md-4">
<div class="dx-field-label">@Resources.Resource.DDebut</div>
<div class="dx-field-value">
@(Html.DevExtreme().DateBox()
.ID("DtDebut")
.Type(DateBoxType.Date)
.Value(Model.paramSynthese.DtDebut_c)
.DisplayFormat(currentCulture.DateTimeFormat.ShortDatePattern)
)
用那个模型
public class SearchSyntheseEvtViewModel
{
public C_DAL_TRS_ATELIER DAL_TRS_ATELIER_c;
public List<C_BEL_TRS_ATELIER> ListBEL_TRS_ATELIER_c;
public C_DAL_TRS_MACHINE DAL_TRS_MACHINE_c;
public List<C_BEL_TRS_MACHINE> ListBEL_TRS_MACHINE;
public ParamSyntheseEvtViewModel paramSynthese;
public SearchSyntheseEvtViewModel()
{
}
public SearchSyntheseEvtViewModel Initialiser()
{
this.DAL_TRS_ATELIER_c = new C_DAL_TRS_ATELIER(C_Interface_Meta.Mesbdd_p, C_Interface_Meta.IndexBdd_p);
this.DAL_TRS_MACHINE_c = new C_DAL_TRS_MACHINE(C_Interface_Meta.Mesbdd_p, C_Interface_Meta.IndexBdd_p);
paramSynthese = new ParamSyntheseEvtViewModel();
paramSynthese = paramSynthese.Initialiser();
paramSynthese = paramSynthese.Charger();
return this;
}
public SearchSyntheseEvtViewModel Charger()
{
DAL_TRS_ATELIER_c.Charger(ref ListBEL_TRS_ATELIER_c);
DAL_TRS_MACHINE_c.Charger(ref ListBEL_TRS_MACHINE);
return this;
}
}
public class ParamSyntheseEvtViewModel
{
public string AT_ID_c { get; set; }
public string TR_ID_c { get; set; }
public DateTime DtDebut_c;
public DateTime DtFin_c;
public Metaproductique.Kmprod.Km_Synthese_Moteur.C_SyntheseEvenement Moteur_c { get; set; }
public List<string> MA_ID_c { get; set; }
public List<string> RE_ID_c { get; set; }
public C_SyntheseEvenement.Regroupement Regroupement_c { get; set; }
public C_SyntheseEvenement.Type Type_c { get; set; }
public DataSet DsDonnees_c = new DataSet();
public string Requete;
public ParamSyntheseEvtViewModel()
{
}
public ParamSyntheseEvtViewModel Initialiser()
{
Moteur_c = new Metaproductique.Kmprod.Km_Synthese_Moteur.C_SyntheseEvenement();
Moteur_c.Initialiser(C_Interface_Meta.Mesbdd_p, C_Interface_Meta.IndexBdd_p);
DtDebut_c = DateTime.Now.AddYears(-1);
DtFin_c = DateTime.Now;
return this;
}
public ParamSyntheseEvtViewModel Charger()
{
return this;
}
public class SearchSyntheseEvtViewModel
{
public C_DAL_TRS_ATELIER DAL_TRS_ATELIER_c;
public List<C_BEL_TRS_ATELIER> ListBEL_TRS_ATELIER_c;
public C_DAL_TRS_MACHINE DAL_TRS_MACHINE_c;
public List<C_BEL_TRS_MACHINE> ListBEL_TRS_MACHINE;
public ParamSyntheseEvtViewModel paramSynthese;
public SearchSyntheseEvtViewModel()
{
}
public SearchSyntheseEvtViewModel Initialiser()
{
this.DAL_TRS_ATELIER_c = new C_DAL_TRS_ATELIER(C_Interface_Meta.Mesbdd_p, C_Interface_Meta.IndexBdd_p);
this.DAL_TRS_MACHINE_c = new C_DAL_TRS_MACHINE(C_Interface_Meta.Mesbdd_p, C_Interface_Meta.IndexBdd_p);
paramSynthese = new ParamSyntheseEvtViewModel();
paramSynthese = paramSynthese.Initialiser();
paramSynthese = paramSynthese.Charger();
return this;
}
public SearchSyntheseEvtViewModel Charger()
{
DAL_TRS_ATELIER_c.Charger(ref ListBEL_TRS_ATELIER_c);
DAL_TRS_MACHINE_c.Charger(ref ListBEL_TRS_MACHINE);
return this;
}
}
public class ParamSyntheseEvtViewModel
{
public string AT_ID_c { get; set; }
public string TR_ID_c { get; set; }
public DateTime DtDebut_c;
public DateTime DtFin_c;
public Metaproductique.Kmprod.Km_Synthese_Moteur.C_SyntheseEvenement Moteur_c { get; set; }
public List<string> MA_ID_c { get; set; }
public List<string> RE_ID_c { get; set; }
public C_SyntheseEvenement.Regroupement Regroupement_c { get; set; }
public C_SyntheseEvenement.Type Type_c { get; set; }
public DataSet DsDonnees_c = new DataSet();
public string Requete;
public ParamSyntheseEvtViewModel()
{
}
public ParamSyntheseEvtViewModel Initialiser()
{
Moteur_c = new Metaproductique.Kmprod.Km_Synthese_Moteur.C_SyntheseEvenement();
Moteur_c.Initialiser(C_Interface_Meta.Mesbdd_p, C_Interface_Meta.IndexBdd_p);
DtDebut_c = DateTime.Now.AddYears(-1);
DtFin_c = DateTime.Now;
return this;
}
public ParamSyntheseEvtViewModel Charger()
{
return this;
}
在控制器中我达到了我的方法
[HttpPost]
public ActionResult Search(SearchSyntheseEvtViewModel search)
{
ParamSyntheseEvtViewModel myParams;
myParams = search.paramSynthese;
if (myParams != null)
{
但我的搜索 ViewModel 中的所有内容都是 null ...
我认为它与 devextreme html 元素有关。 我正在尝试将我的嵌套模型 ParamSyntheseEvtViewModel 绑定到控制器中的发布操作 –
有人知道吗?
【问题讨论】:
-
表单控件的
name属性必须与模型中的属性名称匹配。它甚至不清楚你要绑定什么 -
我们甚至不知道视图中的模型是什么!如果是
SearchSyntheseEvtViewModel,那么什么都不会绑定,因为它甚至没有任何属性,只有DefaultModelBinder无法设置的字段 -
视图中的模型是父模型@model SearchSyntheseEvtViewModel
-
我正在尝试将我的嵌套模型 ParamSyntheseEvtViewModel 绑定到控制器中的 post 操作
-
阅读我以前的cmets!您不能绑定到字段,并且您输入的
name属性需要是name="paramSynthese.DtDebut_c"
标签: asp.net asp.net-mvc-4