2016-07-07 95 views
0

我有一个MVC应用程序与区域,并在一个地区我使用一个称为地址在“Areas/Admin/Views/Shared/EditorTemplates /”文件夹中的编辑器模板。MVC编辑器模板路径问题与属性路由

其与编辑模板返回视图控制器操作是“EditUser(长用户id)”中的用户控制器(它是在管理区)

我在视图编辑模板:

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

这也适用于未明确定义路径。

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

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

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

我的问题是如何指向具有上述属性路由的编辑器模板?

回答

0

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

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

似乎没有工作。这里的问题不是Razor引擎无法找到地址编辑器模板的路径吗? – Nadeeja

+0

看起来像:(UIHint将以正常方式搜索模板,即Area \ Views \ {Controller} \,然后是Area \ Views \ Shared \,然后是Views \ ... –

0

好吧,我通过运气解决了它。

基本上我在我的控制器的顶部添加了一个[RouteArea(“Admin”)]标记,将路由属性添加到正常的操作中,并从Html.EditorFor和左MVC中删除显式路径以决定在哪里查看为模板。

工程就像一个魅力。