我在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.cshtmlLorem.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/

10-11 16:04