asp.net-mvc – Asp.Net MVC:为什么我的视图将NULL模型传递给我
发布时间:2020-12-15 19:31:53 所属栏目:asp.Net 来源:网络整理
导读:我无法弄清楚为什么我的视图只将模型的NULL传回给我的控制器. 这适用于Edit Post方法.我使用Edit Post方法检查了其他控制器,其结构与此相同,并且它们工作正常.它似乎只是这个视图和控制器. 这是我的观点: @model Non_P21_Quote_System_v1._0.Models.gl_code
我无法弄清楚为什么我的视图只将模型的NULL传回给我的控制器.
这适用于Edit Post方法.我使用Edit Post方法检查了其他控制器,其结构与此相同,并且它们工作正常.它似乎只是这个视图和控制器. 这是我的观点: @model Non_P21_Quote_System_v1._0.Models.gl_code @{ ViewBag.Title = "Edit"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Edit</h2> @if (TempData["Message"] != null) { <div style="color:green"> @TempData["Message"] </div><br /> } @if (ViewBag.error != null) { <div style="color:red"> <h3>@ViewBag.error</h3> </div><br /> } @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>gl_code</h4> <hr /> @Html.ValidationSummary(true,"",new { @class = "text-danger" }) @Html.HiddenFor(model => model.ID) <div class="form-group"> @Html.LabelFor(model => model.GL_code,"GL Code",htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.GL_code,new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.GL_code,new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.GL_description,"Gl Description",htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.GL_description,new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.GL_description,new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.expense_type_ID,"Expense",htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownList("expense_type_ID",null,htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.expense_type_ID,new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.eag,"Employee Account Group",htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownList("eag",htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.eag,new { @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> } <div> @Html.ActionLink("Back to List","gl_Index") </div> @section Scripts { @Scripts.Render("~/bundles/jqueryval") } 这是我的控制器方法: [HttpPost] [ValidateAntiForgeryToken] public async Task<ActionResult> Edit([Bind(Include = "ID,GL_code,GL_description,expense_type_ID,eag")] gl_code gl_code) { if (ModelState.IsValid) { db.Entry(gl_code).State = EntityState.Modified; await db.SaveChangesAsync(); return RedirectToAction("gl_Index"); } ViewBag.eag = new SelectList(db.employee_account_group,"ID","eag_name"); ViewBag.expense_type_ID = new SelectList(db.expense_type,"type",gl_code.expense_type_ID); return View(gl_code); } 当我调试它时,我看到传入的模型的值为NULL.我在控制器端看到这个在Edit方法的参数部分. 解决方法
它为null,因为您的模型包含名为gl_code的属性,并且您还在POST方法中为模型gl_code命名了参数.
更改其中一个的名称,模型将正确绑定. 内部发生的是表单为每个成功的表单控件提交名称/值对,在您的情况下为gl_code = someValue. DefaultModelBinder首先初始化模型的新实例.然后,它读取表单值并找到模型中属性的匹配项,并将其设置为someValue.但是它也在方法参数中找到匹配并尝试将参数的值设置为someValue,这会失败(因为你不能做gl_code gl_code =“someValue”;)并且模型变为null. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 标准ASP.NET MVC ModelBinder的文档在哪里?
- asp.net – MembershipUser和IPrincipal对象之间的关系
- 接受List的ASP.NET Web方法失败,“Web服务方法名称无效”.
- asp.net-mvc – 在自定义授权属性中覆盖AuthorizeCore导致“
- asp.net-mvc – Server 2008 R2上的MVC – 如何?
- asp.net – ELMAH日志如何按类型忽略错误
- asp.net-mvc – 在Mvc ViewBag中检查成员是否存在
- 第11章 ASP.NET Web API
- asp.net – SeriesChartType(枚举)示例
- asp.net – 如果我没有指定targetFramework =“4.0”会发生
推荐文章
站长推荐
- asp.net-core – dnx和dnu没有在Ubuntu 15.10上运
- asp.net – 配置IIS以返回404以进行目录浏览尝试
- asp.net – 如何强制ListView以编程方式显示第一
- stored-procedures – 使用经典的asp从oracle 11
- asp.net – 如何在Quartz.Net中处理应用程序关闭
- asp.net – AdBlock在.NET 4.5网站上阻止CSS和图
- .net core入门-项目启动时报错:HTTP Error 502.
- asp.net-mvc – “添加ASP.Net文件夹”未启用
- asp.net 2.0中利用Ajax2.0实现JSON传送大量页面数
- asp.net-mvc-2 – 如何从同一视图更新一对多关系
热点阅读