asp.net-mvc-3 – MVC3 – 为什么回发时导航属性为null
我发布后,我无法弄清楚如何让我的模型(EF4)的导航属性不为空.我在几个基本页面上遇到同样的问题.
即我有一张桌子 在我的HTTPGet Edit方法中,我找到了我想要的具体估计值: Estimate estimate = db.Estimates.Find(id) 从这里我可以从Login表访问Login导航属性和该记录的任何属性. 我将此估计值作为我的强类型视图的模型.当我调用HTTPPost Edit方法(并将模型作为参数传递给它)时,我的Login导航属性为null,我无法访问其中的任何内容.我当然可以解决这个问题,因为我的估计课程中确实有LoginID字段,但感觉非常笨重,而且我错过了实体框架的一个关键优势. 我在多个页面上遇到同样的问题,我将带有导航属性的模型传递给我的视图,视图返回带有null导航属性的模型. 下面是我遇到问题的代码示例: [HttpPost] public ActionResult Edit(Estimate estimate) { var test = estimate.Login.CompanyProfileID; ... 我可以在视图中访问Model.Login及其所有属性,所以我知道它正确地传递给了视图.当我的表单提交时,它只是没有将导航属性传递回控制器. 解决方法
发生的事情是MVC使用称为“模型绑定”的东西,它将POST在页面请求中传递的所有字段与操作参数的匹配属性相匹配.
因此,如果该属性未包含在POST页面的输入字段中,则它将不会绑定到POST操作中的参数,因此将为null. 因此,您可以为Login中的每个属性添加一个隐藏字段,例如 @Html.HiddenFor(m => m.Login.ID) @Html.HiddenFor(m => m.Login.Name) 或者,就像您在解决方法中描述的那样 – 即根据Id重新查询数据库.虽然这看起来很笨拙,但这是一种非常有效的做事方式,因为它避免了必须在整个地方传递隐藏的字段. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 当usercontrol变得可见时执行javascript
- asp.net-mvc – 使用BootstrapValidator与MVC DataAnnotati
- asp.net-web-api – ASP.NET Web API中的错误HTTP响应代码
- asp.net – 使用AspNetZero进行单点登录
- asp.net-mvc – 如何在MVC控制器中使用消息框?
- ASP.NET / SQL 2008性能问题
- asp.net-mvc – mvc 4 beginform with route name
- CLR调试器,ASP.NET – 如何增加超时?
- asp.net – 确保登录用户只能看到他们的数据的最佳方法
- 在ASP.NET中为命中计数器实现存储的最佳方法是什么?