【问题标题】:Does Viewbag return null?Viewbag 是否返回 null?
【发布时间】:2020-05-21 18:05:17
【问题描述】:

我收到错误:无法对空引用执行运行时绑定。

我在尝试通过 ajax 调用回发到我的控件时遇到错误。

$('#main-content-submit').click(function () {
        var labelArray = [];
        labelArray = $("input:checkbox[name=type]:checked").map(function () {
            return $(this).closest('label').text();
        }).get();
        console.log(labelArray);
        event.preventDefault();

        //Ajax call to get all months and years
        $.ajax({
            type: 'POST',
            url: '/Home/Extract',
            data: JSON.stringify({ name: labelArray}),
            contentType: 'application/json',
            success: function (_result) {

            },
            error: function (err, _result) {
                alert("Error in Extract" + err.responseText);
            }
        });

        return false;
    });



> Here is my view: I am getting the error and it is highlighting my @ViewBag.StatementYears items.
<div class="form-group">
            <label class="year" for="Year">Step 2 - Select Statement Year(s) :</label>

            <div id="checkboxes" class="grid-container2">
                <label><input class="year" type="checkbox" name="type" id="chkBoxYear_1"> @ViewBag.StatementYears[0]</label>
                <label><input class="year" type="checkbox" name="type" id="chkBoxYear_2"> @ViewBag.StatementYears[1]</label>
                <label><input class="year" type="checkbox" name="type" id="chkBoxYear_3"> @ViewBag.StatementYears[2]</label>
                <label><input class="year" type="checkbox" name="type" id="chkBoxYear_4"> @ViewBag.StatementYears[3]</label>
                <label><input class="year" type="checkbox" name="type" id="chkBoxYear_5"> @ViewBag.StatementYears[4]</label>
                <label><input class="year" type="checkbox" name="type" id="chkBoxYear_6"> @ViewBag.StatementYears[5]</label>
                <label><input class="year" type="checkbox" name="type" id="chkBoxYear_7"> @ViewBag.StatementYears[6]</label>
                <label><input class="year" type="checkbox" name="type" id="chkBoxYear_8"> @ViewBag.StatementYears[7]</label>
                <label><input class="year" type="checkbox" name="type" id="chkBoxYear_9"> @ViewBag.StatementYears[8]</label>
            </div>
            <button id="selection" class="select-all-years">Select All Years</button>

        </div>

这是我的控制器

[HttpPost]
    public ActionResult Extract(string[] name)
    {

        return View("Index");
    }

【问题讨论】:

  • 您确定您的@ViewBag.StatementYears 已定义吗?
  • 是的,先生,所以在我的家庭控制器中的索引操作中,我得到了那些年。在我添加该 ajax 调用之前,一切正常。可能是因为我将其“发布”到控制器中的不同操作?

标签: c# ajax model-view-controller


【解决方案1】:

您的 @ViewBag.StatementYears 似乎是在 Index 控制器中定义的,而不是在 Extract 控制器中定义的。您正在尝试返回视图而不定义其 ViewBag。我可以为您推荐 2 个解决方案:

  1. Extract 控制器中定义 @ViewBag.StatementYears
  2. 在您的 Extract 控制器中使用 return RedirectToAction("Index") 而不是 return View("Index")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 2014-11-24
    • 2015-12-30
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多