参数在 ActionResult 中没有给出正确的值

Posted

技术标签:

【中文标题】参数在 ActionResult 中没有给出正确的值【英文标题】:The params doesn't give the right values in the ActionResult 【发布时间】:2021-06-24 09:19:51 【问题描述】:

我有一个导入 Excel 数据的过程。这很好用。但是为了开始这个过程,我必须选择一些值。 “Year from”、“Year to”和参数isTest。

我想更改导入值的范围。我尝试了几种解决方案。但没有任何效果。 更改值并单击提交按钮后,我想查看新值。

我必须在代码中更改什么?

这是 ActionResult:

[HttpPost]
public IActionResult Importeren(int jaarVan, int jaarTm, bool isTest)

    //minValue = 1981; maxValue = 2004; isTest = true;
    _importProces.Start(jaarVan, jaarTm, isTest);
    return View();

这是html页面:

@using (Html.BeginForm("Importeren", "Home", new  jaarVan = ViewBag.JaarVan, jaarTm = ViewBag.JaarTm, isTest = ViewBag.IsTest , FormMethod.Post))

    <div class="form-group">
        <div class="col-md-2 col-xl-2">
            @Html.Label("Jaar vanaf:")
        </div>
        <div class="col-md-2 col-xl-2">
            @Html.Hidden("#JaarVan")
            <span id="lblJaarVan">@ViewBag.JaarVan</span><input type="range" id="jaarVan" value="@ViewBag.JaarVan" min="@ViewBag.MinValue" max="@ViewBag.MaxValue" step="1" 
                                                             onshow="showJaarVan(this.value)" oninput="showJaarVan(this.value)" onchange="showJaarVan(this.value)" />
        </div>
        <div class="col-md-2 col-xl-2">
            @Html.Label("Jaar tot/met:")
        </div>
        <div class="col-md-2 col-xl-2">
            @Html.Hidden("#JaarTm")
            <span id="lblJaarTm">@ViewBag.JaarTm</span><input type="range" id="jaarTm" value="@ViewBag.JaarTm" min="@ViewBag.MinValue" max="@ViewBag.MaxValue" step="1" 
                                                           onshow="showJaarTm(this.value)" oninput="showJaarTm(this.value)" onchange="showJaarTm(this.value)" />
        </div>
        <div class="col-md-2 col-xl-2">
            @Html.Label("Is test:")
            @Html.Hidden("#IsTest")
            <input type="checkbox" id="isTest" value="@ViewBag.IsTest" checked="@ViewBag.IsTest" />
        </div>
        @*<progress*@
        <p>&nbsp;<input class="text-primary" type="submit" value="Import Exceldata" name="Opslaan" /></p>
    </div>


<script>
    //$(document).ready(function () 
    //    $('#frmsubmit').submit(function () 

    //        var jaarVan = document.getElementById("#jaarVanRange").value;
    //        var jaarTm = document.getElementById("#jaarTmRange").value;
    //        var isTest = document.getElementById("#isTest").value;
    //    )
    //);

    function showJaarVan(newVal) 
        document.getElementById("lblJaarVan").innerHTML = newVal;
        ViewViewBag.JaarVan = newVal;
    
    function showJaarTm(newVal) 
        document.getElementById("lblJaarTm").innerHTML = newVal;
        ViewViewBag.JaarTm = newVal;
    
</script>

【问题讨论】:

【参考方案1】:

我相信 MVC 表单帖子的模型绑定依赖于输入的名称属性,请尝试在输入中添加名称以匹配操作中的参数:

<input type="range" id="jaarTm" name="jaarTm" value="@ViewBag.JaarTm" min="@ViewBag.MinValue" max="@ViewBag.MaxValue" step="1"  onshow="showJaarTm(this.value)" oninput="showJaarTm(this.value)" onchange="showJaarTm(this.value)" />

我也不认为您需要在 BeginForm() 调用中包含路由值对象,因为表单数据在模型绑定中具有更高的优先级。该对象也在发布之前进行评估,并保存原始年份,而不是您在范围输入中设置的新年份。

【讨论】:

确实我不需要路由值。我知道了。感谢您的年份值(最重要)有效。

以上是关于参数在 ActionResult 中没有给出正确的值的主要内容,如果未能解决你的问题,请参考以下文章

控制器 ActionResult 方法参数未从 ajax 调用接收表单数据

有没有办法捕捉没有给出正确参数的 STL 函数的异常?

从具有多个参数 net core mvc 的控制器调用另一个 actionresult

Action参数和ActionResult

选择查询中的一个或多个必需参数没有给出值

Asp.net MVC 中Controller返回值类型ActionResult