我在ASP.NET MVC项目的某个区域中有此剃刀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'。
我不知道该如何解决。我可以保护
"/"
吗? 最佳答案
您使用的是@HtmlDisplayFor()
的this overload,其中第二个参数是templateName
,并指定用于呈现属性的DisplayTemplate
的名称
如果AMOAResponsible
的值是(例如)“ Lorem”,则该方法将搜索/Views/yourControllerName/DisplayTemplates
文件夹并搜索名为Lorem.cshtml
或Lorem.aspx
的文件,该文件将不存在,因此将在/Views/Shared/DisplayTemplates
中搜索它也不存在,因此它使用默认的DisplayTemplate
(不会引发异常-只是浪费了一些处理时间)
但是,如果该值为Lorem / Ipsum,它将开始在/Views/yourControllerName/Lorem/DisplayTemplates
中搜索,但是由于该文件夹不存在,将引发异常。
我假设您相信如果Model.AMOAResponsible的值是Model.AMOAResponsible ?? string.Empty
的情况下null
会呈现一个“空字符串”,但是无论如何助手都会这样做(即不生成任何输出),因此只需将其删除即可。助手应该是
@Html.DisplayFor(x => x.AMOAResponsible)
关于c# - 如何保护asp.net mvc中的斜线并避免出现“无法映射路径”错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31072050/