【问题标题】:using Ajax.BeginForm ViewModel post is null [duplicate]使用 Ajax.BeginForm ViewModel 帖子为空 [重复]
【发布时间】: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


【解决方案1】:

大家好,我解决了:我的子模型上缺少 get/set 属性!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    相关资源
    最近更新 更多