Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net post后是否为空?编辑模型_C#_Asp.net_Post_Asp.net Core Mvc - Fatal编程技术网

C# asp.net post后是否为空?编辑模型

C# asp.net post后是否为空?编辑模型,c#,asp.net,post,asp.net-core-mvc,C#,Asp.net,Post,Asp.net Core Mvc,我是asp.net新手,但是我在创建一个简单的编辑方法时遇到了很多麻烦。我在谷歌上搜索了很多,但都没有帮助。虽然我已经看到了这个问题,但没有任何答案与我的情况相关 我已经创建了create方法,但是在edit方法中,从表单检索数据之后,所有属性seam要么为空,要么为0 我花了两天时间在这上面,不知道该怎么办。请告知 这是控制器的两种方法 public IActionResult Edit(int? id) { if (id == null)

我是asp.net新手,但是我在创建一个简单的编辑方法时遇到了很多麻烦。我在谷歌上搜索了很多,但都没有帮助。虽然我已经看到了这个问题,但没有任何答案与我的情况相关

我已经创建了create方法,但是在edit方法中,从表单检索数据之后,所有属性seam要么为空,要么为0

我花了两天时间在这上面,不知道该怎么办。请告知

这是控制器的两种方法

 public IActionResult Edit(int? id)
        {
            if (id == null)
            {
                return HttpNotFound();
            }

            Question question = _context.questions.Single(m => m.id == id);
            if (question == null)
            {
                return HttpNotFound();
            }
            return View(question);
        }


        [HttpPost]
        public  IActionResult Edit( Question question)
        {
            if(question.id == 0)
                return HttpNotFound();

            //      _context.questions.Attach(question);
            //         _context.Entry(question).State = EntityState.Modified;
            //         _context.SaveChangesAsync();

            return RedirectToAction("Index");

        }
视图的形式

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Edit</title>
</head>
<body>

<form asp-action="Edit" method="post" >
    <div class="form-horizontal">
        <h4>Question</h4>
        <hr />
        <div asp-validation-summary="ValidationSummary.ModelOnly" class="text-danger"></div>
        <div class="form-group">
            <input asp-for="id" class="form-control" />
        </div>
        <div class="form-group">
            <label asp-for="question" class="col-md-2 control-label"></label>
            <div class="col-md-10">
                <input asp-for="question" class="form-control" />
                <span asp-validation-for="question" class="text-danger" />
            </div>
        </div>
        <div class="form-group">
            <label asp-for="title" class="col-md-2 control-label"></label>
            <div class="col-md-10">
                <input asp-for="title" class="form-control" />
                <span asp-validation-for="title" class="text-danger" />
            </div>
        </div>
        <div class="form-group">
            <label asp-for="answer" class="col-md-2 control-label"></label>
            <div class="col-md-10">
                <input asp-for="answer" class="form-control" />
                <span asp-validation-for="answer" class="text-danger" />
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Save" class="btn btn-default" />
            </div>
        </div>
    </div>
</form>

<div>
    <a asp-action="Index">Back to List</a>
</div>

@section Scripts {
    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
    <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
}
</body>
</html>
}

该模型只是一个非常简单的东西,具有Int-Id和一些字符串属性


请告诉我,为什么会出现此错误?

您的输入没有名称,并且您没有使用Razor的帮助程序来创建它们,这就是为什么您的模型在HttpPost编辑方法中为空

以下是编辑视图的示例:

@model ControleDeProducaoWeb.Models.EquipamentosViewModel

<h2>@ViewBag.Title</h2>
<hr />
@using (Html.BeginForm("Save", ViewContext.RouteData.Values["controller"].ToString(), FormMethod.Post, new { @class = "form-horizontal" }))
{ 
    <div class="row">
        <div class="col-sm-6">
            <div class="form-group">
                <label class="col-sm-3 control-label">Id</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.Id, new { @class = "form-control", @disabled = "disabled" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Coligada</label>
                <div class="col-sm-4">
                    @Html.DropDownListFor(x => x.ColigadaId, ViewData.Model.Coligadas, new { @class = "form-control", @id = "lista-coligadas" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Filial</label>
                <div class="col-sm-4">
                    @Html.DropDownListFor(x => x.FilialId, ViewData.Model.Filiais, new { @class = "form-control", @id = "lista-filiais" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Cala Mínima</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.CalaMin, new { @class = "form-control" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Cala Máxima</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.CalaMax, new { @class = "form-control" })
                </div>        
            </div>
        </div>
        <div class="col-sm-6">
            <div class="form-group">
                <label class="col-sm-3 control-label">Comprimento Máximo</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.ComprimentoMax, new { @class = "form-control" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Altura Máxima</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.AlturaMax, new { @class = "form-control" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Largura Máxima</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.LarguraMax, new { @class = "form-control" })
                </div>
            </div>

            <div class="form-group">
                <div class="col-sm-4 col-sm-offset-3">
                    <a href="@Request.UrlReferrer.AbsoluteUri" class="btn btn-danger pull-right">Cancelar</a>
                    <button class="btn btn-success" type="submit">Salvar</button>
                </div>
            </div>

        </div>
    </div>
}
@model ControleDeProducaoWeb.Models.equipmentosviewmodel
@视图包。标题

@使用(Html.BeginForm(“Save”,ViewContext.RouteData.Values[“controller”].ToString(),FormMethod.Post,new{@class=“form horizontal”})) { 身份证件 @TextBoxFor(x=>x.Id,新的{@class=“form control”,@disabled=“disabled”}) 科利加达 @Html.DropDownListFor(x=>x.ColigadaId,ViewData.Model.Coligadas,新的{@class=“form control”,@id=“lista Coligadas”}) 子女的 @Html.DropDownListFor(x=>x.FilialId,ViewData.Model.Filiais,新的{@class=“form control”,@id=“lista Filiais”}) 卡拉米尼玛 @TextBoxFor(x=>x.CalaMin,新的{@class=“form control”}) 卡拉马西马 @TextBoxFor(x=>x.CalaMax,新的{@class=“form control”}) Máximo综合酒店 @Html.TextBoxFor(x=>x.comprementomax,新的{@class=“form control”}) 阿尔图拉·马西马 @TextBoxFor(x=>x.AlturaMax,新的{@class=“form control”}) 拉古拉·马西马 @TextBoxFor(x=>x.LarguraMax,新的{@class=“form control”}) 萨尔瓦多 }
这似乎是一个bug。 创建viewmodel并在模型周围使用它会有所帮助


抱歉,迟发了帖子

您能展示您的问题模型吗?正如@garethb所问:请展示您的模型和整个视图,而不仅仅是表单。请通过浏览器的开发工具检查您的网络,查看数据是否以及如何发送。您好,我已经添加了必要的内容。感谢您的回答,我会在几个小时后回家试试!然而,如何通过标记助手实现这一点?在我看过的大多数教程中(已经有很多教程)都推荐了标记帮助器。标记帮助器是MVC6的一个新特性。您是否已将Microsoft.AspNet.Mvc.TagHelpers“添加到您的
GlobalImports.cshtml
?另外,将控制器添加到表单中的asp控制器标记中。不,我没有将它们添加到全局导入中,但表单确实指向正确的控制器。您必须为所需的每个视图启用标记帮助程序,或者为
GlobalImports.cshtml
中的所有视图启用标记帮助程序。那也许这就是你的问题,似乎不是。MVC6安装了一个viewstartup文件,并在其中添加了一个viewstartup文件。困扰我的是create表单是有效的。。
@model ControleDeProducaoWeb.Models.EquipamentosViewModel

<h2>@ViewBag.Title</h2>
<hr />
@using (Html.BeginForm("Save", ViewContext.RouteData.Values["controller"].ToString(), FormMethod.Post, new { @class = "form-horizontal" }))
{ 
    <div class="row">
        <div class="col-sm-6">
            <div class="form-group">
                <label class="col-sm-3 control-label">Id</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.Id, new { @class = "form-control", @disabled = "disabled" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Coligada</label>
                <div class="col-sm-4">
                    @Html.DropDownListFor(x => x.ColigadaId, ViewData.Model.Coligadas, new { @class = "form-control", @id = "lista-coligadas" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Filial</label>
                <div class="col-sm-4">
                    @Html.DropDownListFor(x => x.FilialId, ViewData.Model.Filiais, new { @class = "form-control", @id = "lista-filiais" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Cala Mínima</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.CalaMin, new { @class = "form-control" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Cala Máxima</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.CalaMax, new { @class = "form-control" })
                </div>        
            </div>
        </div>
        <div class="col-sm-6">
            <div class="form-group">
                <label class="col-sm-3 control-label">Comprimento Máximo</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.ComprimentoMax, new { @class = "form-control" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Altura Máxima</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.AlturaMax, new { @class = "form-control" })
                </div>
            </div>

            <div class="form-group">
                <label class="col-sm-3 control-label">Largura Máxima</label>
                <div class="col-sm-4">
                    @Html.TextBoxFor(x => x.LarguraMax, new { @class = "form-control" })
                </div>
            </div>

            <div class="form-group">
                <div class="col-sm-4 col-sm-offset-3">
                    <a href="@Request.UrlReferrer.AbsoluteUri" class="btn btn-danger pull-right">Cancelar</a>
                    <button class="btn btn-success" type="submit">Salvar</button>
                </div>
            </div>

        </div>
    </div>
}