asp.net-mvc – ASP.NET MVC验证针对空列表框抛出NullReferenceE
发布时间:2020-12-16 06:35:23 所属栏目:asp.Net 来源:网络整理
导读:我有两个列表框,一个用于可用服务器,另一个用于选定服务器.用户将项目从第一个框移动到第二个框以指示他们的选择. table id="ServerLists" style="width: 100%;" tr td style="width: 40%;" %=Html.ListBox("AvailableServerList",Model.AvailableServerList
我有两个列表框,一个用于可用服务器,另一个用于选定服务器.用户将项目从第一个框移动到第二个框以指示他们的选择.
<table id="ServerLists" style="width: 100%;"> <tr> <td style="width: 40%;"> <%=Html.ListBox("AvailableServerList",Model.AvailableServerList,New With {.size = 8,.ondblclick = "addServer();"})%> </td> <td style="width: 20%;"> <button type="button" onclick="addAll();">Add All >></button> <button type="button" onclick="addServer();">Add ></button> <button type="button" onclick="removeServer();">< Remove</button> <button type="button" onclick="removeAll();"><< Remove All</button> </td> <td style="width: 40%;"> <%=Html.ListBox("SelectedServerList",Model.SelectedServerList,.ondblclick = "removeServer();"})%> </td> </tr> </table> 如果没有服务器添加到第二个列表框,我向ModelState添加一个错误. 问题是如果列表框中没有条目,MVC在使用验证警告呈现视图时会抛出NullReferenceException. [NullReferenceException: Object reference not set to an instance of an object.] System.Web.Mvc.HtmlHelper.GetModelStateValue(String key,Type destinationType) +63 System.Web.Mvc.Html.SelectExtensions.SelectInternal(HtmlHelper htmlHelper,String optionLabel,String name,IEnumerable`1 selectList,Boolean allowMultiple,IDictionary`2 htmlAttributes) +155 System.Web.Mvc.Html.SelectExtensions.ListBox(HtmlHelper htmlHelper,Object htmlAttributes) +62 ASP.views_serveraccess_create_aspx.__RendercMain(HtmlTextWriter __w,Control parameterContainer) in C:Documents and SettingsnfosterMy DocumentsVisual Studio ProjectsClient Portal 3TrunksrcStargate3.WebViewsServerAccessCreate.aspx:148 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children) +256 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19 System.Web.UI.Control.Render(HtmlTextWriter writer) +10 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter adapter) +27 System.Web.UI.Control.RenderControl(HtmlTextWriter writer,ControlAdapter adapter) +99 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children) +134 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19 System.Web.UI.Control.Render(HtmlTextWriter writer) +10 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter adapter) +99 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25 ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w,Control parameterContainer) in C:Documents and SettingsnfosterMy DocumentsVisual Studio ProjectsClient Portal 3TrunksrcStargate3.WebViewsSharedSite.Master:97 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children) +256 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19 System.Web.UI.Control.Render(HtmlTextWriter writer) +10 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ICollection children) +134 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19 System.Web.UI.Page.Render(HtmlTextWriter writer) +29 System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) +57 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter adapter) +99 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) +1266 其他人遇到过这个问题吗?我可以尝试一些变通方法吗?如果没有做出选择,我可能不得不在那里插入[请选择一个服务器]条目,但是对此问题的修复将不胜感激. 编辑:根据要求添加了控制器操作 <AcceptVerbs(HttpVerbs.Post)> _ Function Create(ByVal collection As FormCollection) As ActionResult Dim acceptedFields() As String = {"StartTime","EndTime","ReasonForAccess","WorkToBeDone","RegressionPlan","Servers","AccessAccount","Password"} Dim accessRequest As New ServerAccessRequest UpdateModel(Of ServerAccessRequest)(accessRequest,acceptedFields) If accessRequest.IsValid Then 'TODO: Do database stuff here Return View("AccessRequestConfirmation") Else For Each violation In accessRequest.GetRuleViolations ModelState.AddModelError(violation.PropertyName,violation.ErrorMessage) Next End If Return View(New ServerAccessViewModel(accessRequest)) End Function 解决方法
请参阅
release notes for ASP.NET MVC 2 Preview 1;显然这个(将null传递给模型状态时为NullReferenceException)是ASP.NET MVC中的一个已知错误.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – ASP.NET MVC 3未找到视图“错误”或其主文
- asp.net-mvc – System.Web.Optimization.Bundle与WebEssen
- asp.net-mvc – ASP.NET MVC 2中的空查询字符串参数的模型绑
- asp.net – File.Exists从网络共享返回false
- 使用ASP.NET MVC和JQuery表单插件/文件上传检测IsAjaxReque
- asp.net – 将OpenID集成到网站的注册过程中
- asp.net – 如何使用master从asp:content页面访问母版页上
- asp.net – 如何为我的网站关闭IIS中的自定义错误处理?
- ASP.NET – LINQ的优势
- asp.net – asp:RadioButtonList’RepeatLayout’被CDN忽略
推荐文章
站长推荐
- ASP.NET MVC如何实现自定义验证(服务端验证+客户
- 调试 ASP.NET Core 2.0 源代码
- asp.net-mvc – 如何在Asp.Net MVC中导出到excel
- asp.net – .NET 4.0 ObjectCache的线程安全和范
- UnitOfWork知多少
- asp.net-web-api – ASP.NET Web API IQueryable
- asp.net-web-api – 如何记录webapi中控制器中执
- asp.net-core – ASP.NET Core / MVC6中的WebTel
- asp.net-mvc-3 – ASP.NET MVC 3:如何在控制器方
- asp.net-mvc – ASP.NET MVC:返回查询字符串完整
热点阅读