我在ASP.NET MVC项目的某个区域中有这个razor html:
<td>
@Html.DisplayFor(x => x.AMOAResponsible, Model.AMOAResponsible ?? string.Empty)
</td>
当AMOARsponsible的价值类似于“Lorem Ipsum”时,一切都很好。 但有时值“AMOAResponsible”包含斜杠(例如“LOREM / IPSUM”),然后我收到以下错误:
无法映射路径 '/Areas/Dashboard/Views/Psr/DisplayTemplates/LOREM/IPSUM.aspx'。
我不知道如何解决这个问题。我可以保护"/"
吗?
答案 0 :(得分:3)
您使用@HtmlDisplayFor()
templateName
,其中第二个参数为DisplayTemplate
,并指定用于呈现属性的AMOAResponsible
的名称
如果/Views/yourControllerName/DisplayTemplates
的值是(例如)&#34; Lorem&#34;,该方法将搜索Lorem.cshtml
文件夹并搜索名为Lorem.aspx
或{{的文件1}},它不存在,所以它然后在/Views/Shared/DisplayTemplates
中搜索也不会存在,所以它使用默认的DisplayTemplate
(没有抛出异常 - 但只是浪费了一些处理时间)
如果值为Lorem / Ipsum,它将开始在/Views/yourControllerName/Lorem/DisplayTemplates
中搜索,但由于该文件夹不存在,因此会抛出异常。
我认为你认为Model.AMOAResponsible ?? string.Empty
会呈现一个空字符串&#39;如果Model.AMOAResponsible的值是null
,但帮助者仍然这样做(即不生成输出),所以只需将其删除即可。助手应该只是
@Html.DisplayFor(x => x.AMOAResponsible)