如何在asp.net mvc中保护slash并避免";未能映射路径“;错误
本文关键字:quot 映射 错误 路径 net asp mvc slash 保护 | 更新日期: 2023-09-27 17:59:48
我在ASP的一个区域中有这个剃刀html。NET MVC项目:
<td>
@Html.DisplayFor(x => x.AMOAResponsible, Model.AMOAResponsible ?? string.Empty)
</td>
当AMAResponsible的值类似于"Lorem Ipsum"时,一切都还好。但有时值"AMAResponsible"包含斜线(例如"LOREM/IPSUM"),然后我会得到以下错误:
未能映射路径'/Areas/Dashboard/Views/Psr/DisplayTemplates/LOREM/IPSUM.aspx'.
我不知道怎么解决这个问题。我可以保护"/"
吗?
您使用@HtmlDisplayFor()
的此重载,其中第二个参数是templateName
,并指定用于呈现属性的DisplayTemplate
的名称
如果AMOAResponsible
的值是(比如)"Lorem",该方法将搜索/Views/yourControllerName/DisplayTemplates
文件夹并搜索一个名为Lorem.cshtml
或Lorem.aspx
的文件,该文件不存在,因此它将在同样不存在的/Views/Shared/DisplayTemplates
中搜索,因此它使用默认的DisplayTemplate
(没有抛出异常,只是浪费了一些处理时间)
但是,如果值为Lorem/Ipsum,它将在/Views/yourControllerName/Lorem/DisplayTemplates
中开始搜索,但由于文件夹不存在,因此引发异常。
我假设您相信,如果Model的值为,Model.AMOAResponsible ?? string.Empty
将呈现一个"空字符串"。AMAResponsible是null
,但助手无论如何都会这样做(即不生成输出),所以只需删除它。助手应该只是
@Html.DisplayFor(x => x.AMOAResponsible)