Asp.net &引用;值不能为null或空。参数名称:contentPath";当ModelState出现错误时,在回发时最意外的行上
我已经连续两个小时和这个怪物讨价还价了 我得到这个错误: 值不能为null或空。参数名称:contentPath 在我看来,这一行:Asp.net &引用;值不能为null或空。参数名称:contentPath";当ModelState出现错误时,在回发时最意外的行上,asp.net,.net,asp.net-mvc,asp.net-mvc-5,Asp.net,.net,Asp.net Mvc,Asp.net Mvc 5,我已经连续两个小时和这个怪物讨价还价了 我得到这个错误: 值不能为null或空。参数名称:contentPath 在我看来,这一行: @Html.ValidationMessageFor(model => model.IssueName, "", new { @class = "text-danger" }) 下面给出的堆栈跟踪似乎表明调用了Url.Content,但我没有这样做。下面是堆栈跟踪,随后是导致错误的代码行周围的多行代码: [ArgumentException:值不能为
@Html.ValidationMessageFor(model => model.IssueName,
"", new { @class = "text-danger" })
下面给出的堆栈跟踪似乎表明调用了Url.Content
,但我没有这样做。下面是堆栈跟踪,随后是导致错误的代码行周围的多行代码:
[ArgumentException:值不能为null或空。参数名称:
contentPath]System.Web.Mvc.UrlHelper.GenerateContentUrl(字符串
contentPath,HttpContextBase httpContext)+125System.Web.Mvc.UrlHelper.Content(字符串contentPath)+26
ASP.\页面\视图\日志\编辑问题\ cshtml.Execute()中的 MyProject\Views\Journal\EditIssue.cshtml:45
System.Web.WebPages.WebPageBase.ExecutePageHierarchy()+197
System.Web.Mvc.WebViewPage.ExecutePageHierarchy()+105
System.Web.WebPages.StartPage.RunPage()+17
System.Web.WebPages.StartPage.ExecutePageHierarchy()+64
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriter编写器、WebPageUnderingBase起始页)+78
System.Web.Mvc.RazorView.RenderView(ViewContext, TextWriter编写器,对象实例)+256
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext,TextWriter)+107
System.Web.Mvc.ViewResultBase.ExecuteSult(ControllerContext上下文) +291 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext,ActionResult ActionResult)+13
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList
1
筛选器、Int32筛选器索引、ResultExecutingContext预文本、,
ControllerContext ControllerContext,ActionResult ActionResult)+56
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList
1
筛选器、Int32筛选器索引、ResultExecutingContext预文本、,
ControllerContext ControllerContext,ActionResult ActionResult)+420System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext,IList
1过滤器,ActionResult ActionResult)+52
System.Web.Mvc.Async.c__显示类2B.b__1c()
+173 System.Web.Mvc.Async.c__显示类21.b__1e(IAsyncResult
异步结果)+100
System.Web.Mvc.Async.WrappedAsyncResult
1.CallEndDelegate(IAsyncResult
异步结果)+10System.Web.Mvc.Async.WrappedAsyncResultBase
1.End()+49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult
异步结果)+27
System.Web.Mvc.Controller.b_u1d(IAsyncResult
asyncResult,ExecuteCoretate innerState)+13
System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate(IAsyncResult
异步结果)+29System.Web.Mvc.Async.WrappedAsyncResultBase
1.End()+49
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)+36
System.Web.Mvc.Controller.b___15(IAsyncResult
异步结果,控制器)+12
System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate(IAsyncResult
异步结果)+22System.Web.Mvc.Async.WrappedAsyncResultBase
1.End()+49
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)+26
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult
异步结果)+10
System.Web.Mvc.MvcHandler.b_uu5(IAsyncResult
asyncResult,ProcessRequestState innerState)+21
System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate(IAsyncResult
异步结果)+29System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+49
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28 System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.EndProcessRequest(IAsyncResult 结果)+9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9644097 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)+155 引发异常的行周围的代码行包括:
<div class="form-group">
@Html.LabelFor(model => model.IssueName, htmlAttributes: new { @class = "control-label col-md-2"})
<div class="col-md-10">
@Html.EditorFor(model => model.IssueName, new { htmlAttributes = new { @class = "form-control", id = "IssueName" } })
@Html.ValidationMessageFor(model => model.IssueName, "", new { @class = "text-danger" })
</div>
</div>
天哪
如果你曾经,曾经,曾经得到过这个错误,请记住,这个错误只有一个原因
在视图的行网络中的某个位置,您传递了一个空值
@Url.Content方法的值。期间。
它报告异常的线路可能与异常无关,可能距离罪犯一英里或两英里
搜索,搜索,疯狂地搜索。:-)
这就是我找到解决方法并从痛苦中解脱出来的原因。我花了一段时间才停止查看以红色突出显示的错误页面行,并实际阅读顶部的错误消息。如果您得到类似的堆栈跟踪,则
Url。内容可能是罪魁祸首。但这是我通过异常消息搜索时出现的第一个答案,我的问题与Url.Content
无关。防止这种情况的一个好办法是在调用Url.Content()
方法之前检查是否有值要传递给它,例如@if(!string.isNullOrEmpty(item.Url){}
或类似的东西。
[HttpPost]
public async Task<ActionResult> EditIssue(EditIssueViewModel viewModel)
{
viewModel.AvailableTags = BusinessManager.GetAllTags();
if (viewModel.IssuePDFFile == null || viewModel.IssuePDFFile.ContentLength == 0)
{
ModelState.AddModelError("", "Please select a file to upload.");
return View(viewModel);
}
var fileInfo = new FileInfo(viewModel.IssuePDFFile.FileName);
if (!StaticData.AcceptedContentTypes.Contains(viewModel.IssuePDFFile.ContentType, StringComparer.InvariantCultureIgnoreCase) ||
!fileInfo.Extension.Equals(".pdf", StringComparison.InvariantCultureIgnoreCase))
{
ModelState.AddModelError("", "You can only select a PDF file.");
return View(viewModel);
}
if (!ModelState.IsValid)
{
var errors = ModelState.Values.SelectMany(v => v.Errors)
.Select(e => new { e.ErrorMessage, e.Exception });
var errorList = errors.ToList();
errorList.ForEach(e => Debug.Print(e.ErrorMessage));
errorList.ForEach(e => ModelState.AddModelError("", e.ErrorMessage));
return View(viewModel);
}
var operationResult = await BusinessManager.EditIssueAsync(viewModel);
if (!operationResult.Succeeded)
{
ModelState.AddModelError("", operationResult.FailureMessage);
return View(viewModel);
}
viewModel = (EditIssueViewModel)BusinessManager.GetIssueWithRelationships(viewModel.IssueId);
viewModel.SuccessMessage = operationResult.SuccessMessage;
return View(viewModel);
}