在 asp.net mvc 中将数据从视图传递到控制器失败

欧迈玛

我想将数据从视图传递给控制器​​,但它总是返回 0,我不知道为什么。我必须验证输入的代码是否与传入的 ActionResult Sortie() 参数相同,但我无法在视图中获取输入的值。

看法:

    @model ViewModel.DemandeViewModel

@{
    ViewBag.Title = "Sortie";
}
<div class="col-xs-12">
<div class="box">
    <h2>Sortie Gabarit</h2>


    @using (Html.BeginForm("Sortie", "Demandes", FormMethod.Post))
    {
        @Html.AntiForgeryToken()
    <div class="form-horizontal">

        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        @Html.HiddenFor(model => model.CodeBarre)

        @ViewBag.error
        @Html.ValidationMessage("error_msg")
        <div class="form-group">
            @Html.LabelFor(model => model.CodeBarre, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.CodeBarre, new { htmlAttributes = new { @class = "form-control", @name = "codeB" } })
                @Html.ValidationMessageFor(model => model.CodeBarre, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Sortie" class="btn btn-default" />
            </div>
        </div>
    </div>


    }
</div>
</div>

控制器:

  //Get Sortie
    public ActionResult Sortie(Int64 id)
    {
         TempData["codebarre"] = id;

        return View();

    }
    //Post Sortie
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Sortie()
    {

        var mvtrepository = new MvtRepository(db);
        var c = Request.Form["codeB"];

        if (Convert.ToInt64(TempData["codebarre"]) == Convert.ToInt64(c))
        {
            var mvtInsert = mvtrepository.InsertMvt(DateTime.Now, Convert.ToInt64(TempData["codebarre"]), 2);
            return RedirectToAction("Traitement");
        }


        else
        {
            return View("Error");
        }

    }

请帮助,谢谢。

乔治·帕沙伊德

不要Request.Form直接访问相反,您的 POST 操作应该接受 ViewModel 作为参数。

[HttpPost]
public ActionResult Sortie(ViewModel.DemandeViewModel postData) {
     int c = postData.CodeBarre; // assuming CodeBarre is an int in the ViewModel
     if ((int)TempData["codebarre"] == c) {
         // ...
     }
     // ...
}

同样在您的视图中,让 MVC 设置name属性,以便 ModelBinder 可以正确绑定 ViewModel。

@Html.EditorFor(model => model.CodeBarre, new { htmlAttributes = new { @class = "form-control" } })

因为您有 CodeBarre 的编辑器输入,所以您不需要其他隐藏输入。删除该行

@Html.HiddenFor(model => model.CodeBarre)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP.Net MVC如何将数据从视图传递到控制器

无法将数据从视图传递到控制器 ASP.NET MVC 5

ASP.NET Core MVC - 数据不会在发布请求中从视图传递到控制器

ASP.Net MVC 将数据从视图传递到不同文件夹中的控制器

从视图调用控制器并将值从视图传递到 asp.net mvc 中的控制器

在 .net Core MVC 中将表单数据从视图组件传递到控制器

Asp.net MVC,无需使用Ajax,即可将数组从视图传递到控制器

ASP.NET MVC - 将动态 ExpandoObject 从控制器传递到视图时出现 RuntimeBinderException

将整个对象从视图传递到ASP.NET MVC 5中的控制器

使用ASP.NET MVC将表对象从视图传递到控制器

ASP.NET Core MVC-从视图将模型数据传递回控制器

将数据从视图发布到ASP.Net MVC中的控制器

Asp.net MVC 5-视图将空数据发布到控制器

ASP.NET MVC C# - 将数据从控制器传递到类

如何将数据从ASP.NET WebAPI ApiController传递到ASP.NET MVC控制器?

将空列表从控制器传递到控制器ASP.NET MVC

如何将ID从剃刀视图传递到ASP .Net MVC中控制器的操作方法?

将由javascript创建的控件列表的值从视图传递到asp.net mvc3中的控制器

如何将隐藏字段值从视图传递到控制器ASP.NET MVC 5

如何将值从视图传递到MVC ASP .NET中的另一个控制器

Asp.Net MVC5-通过jqGrid将嵌套模型从视图传递到控制器

将Viewbag数据从View传递到ASP.Net MVC3 Razor中的控制器

在ASP.NET MVC中将模型从View传递给控制器

如何在ASP .NET MVC中将特定行的值传递给控制器方法

如何在asp.net mvc 中将复杂模型传递回控制器

如何将ID从角度视图传递给ASP.NET MVC控制器?

Asp.Net MVC:为什么我的视图将NULL模型传递回控制器?

Asp.net Mvc 控制器返回可选视图

Asp.Net MVC。可以将数据从视图传输到控制器而不会丢失数据