尝试使用ViewModel进行发布时为空引用

约翰松64

目前,我有一个ViewModel,其中包含2个模型列表。使用ViewModel显示内容很好,但是当我尝试发布时,我得到一个null引用异常。

public class DashboardViewModel
{
    public IList<DashboardModel> dashboard { get; set; }
    public IList<WidgetModel> widgets { get; set; }
}

这是视图上的表格

 @using (Html.BeginForm("AddDashboard", "Dashboard", FormMethod.Post))
            {
                @Html.AntiForgeryToken()

                <div class="form-horizontal">
                    <h4>DashboardModel</h4>
                    <hr />
                    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                    <div class="form-group">
                        @Html.LabelFor(model => model.dashboard.Last().DashName, htmlAttributes: new { @class = "control-label col-md-2" })
                        <div class="col-md-10">
                            @Html.EditorFor(model => model.dashboard.Last().DashName, new { htmlAttributes = new { @class = "form-control" } })
                            @Html.ValidationMessageFor(model => model.dashboard.Last().DashName, "", new { @class = "text-danger" })
                        </div>
                    </div>

                    <div class="form-group">
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                            <button type="submit" value="AddDashboard" class="btn btn-primary">Save changes</button>
                        </div>
                    </div>
                </div>
            }

这是我的行动

 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult AddDashboard([Bind(Include = "DashID,DashName,CreatedBy,CreatedDate")] DashboardViewModel dashboardVM)
    {
        if (ModelState.IsValid)
        {
            DashboardModel newDashboard = dashboardVM.dashboard.Last();
            newDashboard.CreatedBy = User.Identity.GetUserId();
            newDashboard.CreatedDate = DateTime.Now;

            db.dashboards.Add(newDashboard);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(dashboardVM);
    }

空引用发生在AddDashboard操作中,我设置了一个断点并意识到dashboardVM为空,dashboard属性为空

布伦丹·格林(Brendan Green)

您的HttpPost操作正在接收DashboardViewModel,其中在内部包含的集合以及其他属性DashboardModel

但是,您没有传递任何东西的集合,而是传递了一个DashboardModel

更新您的操作以接受DashboardModel替代:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddDashboard([Bind(Include = "DashID,DashName,CreatedBy,CreatedDate")] DashboardModel dashboardVM)
{
    ...
}

注意:[Bind]属性可能需要调整;您尚未提供DashboardModel该类的定义

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试避免使用SingleOrDefault进行空引用

使用fetch()发布数据时为空

每次我尝试使用 Swift 和 Alamofire 将数据发布到 MySQL 数据库时,数据显示为空?

MVVM:尝试使用LiveData加载数据时,ViewModel为null

使用 FormData() 时发布请求时请求正文为空

尝试使用restTemplate发布到chatbase时为500

尝试使用TTS时出现“空对象引用错误”

SelectList在发布时为空

asp.net核心MVC表单ViewModel在发布时为空

尝试将数据发布到服务器时,Braintree的payment_method_nonse为空

尝试使用 RVest 抓取 Web 数据时为空变量

当我使用axios进行发布时,req.body为空,但是当我使用“请求”时,它工作正常

当URL进行HTML编码时,为什么我的ViewModel字段为空?

尝试封装时获取“空对象引用”

当我使用JS进行发布时,viewmodel不会更新-Asp.net

尝试进行xUnit测试时,对象引用未设置为对象的实例

发布数据时对象为空

尝试使用ViewModel在片段之间进行通信时出现编译错误

AutoCloseable为空时的尝试资源

CSV尝试读取时为空

发布到控制器时,部分viewmodel为null

尝试使用$ resource发布时出错

正确性-对先前取消引用的值进行Nullcheck,尝试使用资源时出现FOD问题

我尝试使用python进行网页抓取,并且输出为空。我做错什么了吗?

使用Fiddler进行发布时,使用FromBodyAttribute的WebAPI模型为null

尝试在空对象引用上为checkPermission调用虚拟方法

当我尝试使用 Spring Boot 为 SessionFactory 创建 bean 时出现无法解析的循环引用

'is'与尝试使用空检查进行转换

使用NUnit和Moq进行测试时出现意外的空引用