這是我的理解是,位置是:如何在使用MVC區域時定義自定義編輯器模板的位置?
~/Views/Shared/EditorTemplates/ViewModelName
不過我有使用地區的許多瀏覽文件夾。我可以定義文件以使用一些參數調用
@Html.EditorFor(...
這是我的理解是,位置是:如何在使用MVC區域時定義自定義編輯器模板的位置?
~/Views/Shared/EditorTemplates/ViewModelName
不過我有使用地區的許多瀏覽文件夾。我可以定義文件以使用一些參數調用
@Html.EditorFor(...
您可以傳遞模板的位置作爲第二個參數。
@Html.EditorFor(x => x.Foo, "~/Views/Custom/EditorTemplates/ViewModelName.cshtml")
這就是說我會避免這樣做,並堅持公約。這意味着如果你想從定義區域之外使用一些編輯器模板,那麼你可能沒有在正確的地方定義這個模板,而應該將它移動到共享文件夾中。
這些都是默認查找路徑,這RazorViewEngine將搜索編輯模板,按以下順序:
"~/Areas/{area}/Views/{controller}/EditorTemplates/{templateName}.cshtml",
"~/Areas/{area}/Views/Shared/EditorTemplates/{templateName}.cshtml",
"~/Views/{controller}/EditorTemplates/{templateName}.cshtml",
"~/Views/Shared/EditorTemplates/{templateName}.cshtml",
如果沒有指定,templateName
值默認爲對象類型(在你的情況「ViewModelName」)。如果MVC未找到具有此名稱的模板,則會回退以使用已知的內置模板(int,string,collection,object等)來解析呈現。
您可以指定模板名稱改寫默認值:
@Html.EditorFor(m => m.MyDate, "_MyTemplate")
您也可以指定相對路徑:
@Html.EditorFor(m => m.MyDate, "../_MyTemplate")
您無法指定以任何形式(例如:"~/Views/Custom/EditorTemplates/ViewModelName"
)的完整路徑和你不應該在模板名稱中指定擴展名(例如:'_MyTemplate.cshtml'
或'_MyTemplate.vbhtml'
)!
它不總是默認爲共享文件夾嗎?如果可能,我想保持它非常地方。 –
@RichardM,是的,它默認爲共享文件夾。但從我的理解你的問題你試圖爲你的編輯模板使用一些自定義的位置。如果您不遵循約定,則需要指定模板的路徑。 –
不幸的是,你不能指定編輯器模板的完整路徑。 – Dyppl