asp.net-mvc – Route Id覆盖Model.Id
发布时间:2020-12-16 07:19:42 所属栏目:asp.Net 来源:网络整理
导读:我有这样的路线: Conference/Committees/1 在该页面内,它循环通过会议委员会(会议ID = 1). 我有一个局部视图,为选定的委员会呈现一个编辑样式页面,其路径如下: Conference/Committees/1?committeeId=2 在调试中,模型数据是正确的,委员会的Id = 2.但是,当我
我有这样的路线:
Conference/Committees/1 在该页面内,它循环通过会议委员会(会议ID = 1). 我有一个局部视图,为选定的委员会呈现一个编辑样式页面,其路径如下: Conference/Committees/1?committeeId=2 在调试中,模型数据是正确的,委员会的Id = 2.但是,当我使用以下Razor语句时: @Html.HiddenFor(model => model.Id) 使用以下型号: @model munhq.Models.Committee 隐藏输入的值为“1”而不是“2”. 这是MVC中的错误吗?或者我做错了什么? 更新 如果我更换 @Html.HiddenFor(model => model.Id) 同 <input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="Id" name="Id" type="hidden" value="@Model.Id" /> 它呈现正确的Id值. 更新2 public async Task<ActionResult> Committees(int id,PrivilegedAction? actionToTake,int? committeeId,ConferenceStatusMessage? csm) { Conference conference; HandleConferenceStatusMessage(csm); try { conference = await db.Conferences .Include(i => i.Committees.Select(c => c.CommitteeMemberCommitteeEntries)) .Where(i => i.Id == id) .SingleAsync(); HandleAction(actionToTake,conference); HandleAuthorisations(conference); } catch { return ConferenceActionFail(); } if (committeeId == null) { if (conference.Committees.FirstOrDefault() == null) { committeeId = 0; } else { committeeId = conference.Committees.FirstOrDefault().Id; } ViewBag.ConferenceId = id; // used for adding a committee member entry return RedirectToAction("Committees",new { id = id,action = actionToTake,committeeId = committeeId,csm = csm }); } else { if (CommitteeIsPartOfConference(conference,committeeId) || committeeId == 0) { ViewBag.SelectedCommittee = committeeId; ViewBag.JsonAvailableMembers = jsonAvailableCommitteeMembers(id); return View(conference); } else { return HttpNotFound(); } } } 解决方法
在返回视图之前尝试使用它:
ModelState.Clear(); 通常,在调用Action时,框架会根据查询字符串值,后期数据,路由值等构建ModelStateCollection.此ModelStateCollection将传递给View.在尝试从实际模型中获取值之前,所有HTML输入帮助程序都首先尝试从ModelStateCollection获取值.这就是为什么你的Html.HiddenFor扩展工作不正确(它首先检查ModelStateCollection)而你的< input type =“hidden”>包含正确的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 在操作之间传递参数
- asp.net – Crystal Report Viewer控件未加载报表中的图像
- asp.net – 在按钮单击时动态添加新文本框
- ASP.NET MVC身份验证Cookie未被检索
- asp.net – .NET OutputCache指令不起作用
- asp.net-mvc-4 – 如何在MVC 4中每3秒刷新一次局部视图?
- asp.net-mvc – 在不更新的其他.config文件上的AppSettings
- rest – 基于权限从WebApi端点进行上下文序列化
- asp.net – SQL使用逗号分隔值和IN子句
- asp.net – SeriesChartType(枚举)示例
推荐文章
站长推荐
热点阅读