【问题标题】:MVC Editor Template path issue with Attribute Routing属性路由的 MVC 编辑器模板路径问题
【发布时间】:2016-07-07 07:42:32
【问题描述】:

我有一个带有区域的 MVC 应用程序,在一个区域中,我使用了一个名为 Address 的编辑器模板,该模板位于“Areas/Admin/Views/Shared/EditorTemplates/”文件夹中。

使用编辑器模板返回视图的控制器操作是用户控制器(位于管理区域)中的“EditUser(long userId)”

我在视图中的编辑器模板为:

@Html.EditorFor(x => x.Address, "../Views/Shared/EditorTemplates/Address")

这也可以在没有明确定义路径的情况下工作。

通过“..Admin/User/EditUser?userId=1”访问此页面工作正常。但是,当我在 EditUser 上使用属性路由时:

[Route("admin/user/{userId}/edit")]

编辑器模板使用默认视图。 (基本上显示模型中所有内容的编辑器)

我的问题是如何使用上面提到的属性路由指向编辑器模板?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    您可以使用[UIHint] 指定要使用特殊编辑器的 ViewModel 中的属性,以指定编辑器模板的名称。

    public class ViewModel {
        [UIHint("Address")]
        public string Address {get; set;}
    }
    

    【讨论】:

    • 似乎不起作用。这里的问题不是和 Razor 引擎找不到地址编辑器模板的路径有关吗?
    • 看起来像 :( UIHint 会以正常方式搜索模板,即 Area\Views\{Controller}\,然后是 Area\Views\Shared\,然后是 Views\...
    【解决方案2】:

    好吧,我靠运气解决了。

    基本上我在我的控制器顶部添加了一个 [RouteArea("Admin")] 标记,像往常一样将路由属性添加到操作中,并从 Html.EditorFor 中删除了显式路径,并让 MVC 决定在哪里寻找模板。

    像魅力一样工作。

    【讨论】:

      猜你喜欢
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多