【问题标题】:Model comes null to controller模型对控制器为空
【发布时间】:2020-08-15 20:47:16
【问题描述】:

这是我的第一个问题。我有 1 个视图的 2 个模型。我构建了代码,但我有一个问题。数据从视图到控制器为空。

型号:

妈妈模型:

    public class BildirimOlusturViewModel
    {
        public BildirimOlusturModel bildirimOlusturModel { get; set; }
        public TagBoxViewModel tagBoxViewModel { get; set; }
    }

儿童模特:

    public class BildirimOlusturModel
    {
        [Required(ErrorMessage = "Lütfen bildirim tipi seçiniz")]
        public string BildirimTipi { get; set; }
        [Required(ErrorMessage = "Lütfen alıcı tipi seçiniz")]
        public string AliciTipi { get; set; }
        [Required(ErrorMessage = "Lütfen alıcı seçiniz")]
        public string Alicilar { get; set; }
        [Required(ErrorMessage = "Lütfen bir başlık giriniz")]
        public string Baslik { get; set; }
        [Required(ErrorMessage = "Mesaj boş olamaz")]
        public string Mesaj { get; set; }
    }
    public class TagBoxViewModel
    {
        public List<string> Items { get; set; }
    }

查看:

@model xyz.Web.Notifications.Models.BildirimOlusturViewModel
<form method="post" asp-controller="Bildirim" asp-action="BildirimOlustur">
...
            @(Html.DevExtreme().SelectBoxFor(s => s.bildirimOlusturModel.AliciTipi)
        .Placeholder("Alıcı Tipi...")
                    .DataSource(new List<SelectListItem> {
                            new SelectListItem
                            {
                                Text = "Personel",
                                Value = "personel".ToString()
                            },
                            new SelectListItem
                            {
                                Text = "Müşteri",
                                Value = "musteri".ToString()
                            }})
                     .ValueExpr("Value").DisplayExpr("Text")
                     .OnValueChanged("alicitipi_changed")
                     .ID("slcAliciTipi")
            )
        </div>
        <div class="col-md-8">
            @(Html.DevExtreme().TagBoxFor(x => x.bildirimOlusturModel.Alicilar)
                .Items(Model.tagBoxViewModel.Items)
                .SearchEnabled(true)
                .Placeholder("Alıcı...")
                .ID("TagBoxAlici")
            )
            @(Html.DevExtreme().TextBoxFor(x => x.bildirimOlusturModel.Baslik)
        .Placeholder("Başlık...")
            )
            <input type="text" id="Mesaj"  asp-for="bildirimOlusturModel.Mesaj" name="bildirimOlusturModel.Mesaj" id="bildirimOlusturModel.Mesaj"/>

 @(Html.DevExtreme().Button() 
        .Text("Submit")
        .Type(ButtonType.Default)
        .StylingMode(ButtonStylingMode.Contained)
        .Width(120)
        .UseSubmitBehavior(true)
            )
</form>

控制器:

        [HttpPost]
        public IActionResult BildirimOlustur(BildirimOlusturModel model)
        {
            string sAlicilar = model.Alicilar;
            string sAliciTipi = model.AliciTipi;
            string sBaslik = model.Baslik;
            string sBildirimTipi = model.BildirimTipi;
            string sMesaj = model.Mesaj;
        }

提交按钮在 post 方法中发送给我,但不发送模型。我的变量为空。谢谢你的帮助。

【问题讨论】:

  • 为了将大部分模型返回到控制器,您需要将元素包装在 Html.BeginForm 中。
  • 抱歉,我剪了一部分

标签: c# asp.net-mvc asp.net-core model-view-controller controller


【解决方案1】:

尝试在参数前添加 [FromBody] 属性。

 public IActionResult BildirimOlustur([Frombody] BildirimOlusturModel model)

【讨论】:

    【解决方案2】:

    我解决了这个问题。控制器正在等待错误的参数。

      [HttpPost]
        public IActionResult BildirimOlustur(BildirimOlusturViewModel model)
        {
            BildirimOlusturModel mdl = new BildirimOlusturModel();
            mdl = model.bildirimOlusturModel;
            string sAlicilar = mdl.Alicilar;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 2019-07-17
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      相关资源
      最近更新 更多