我是MVC3和razor的新手,所以这可能是显而易见的,但没有任何数量的googlefu为我找到答案。
我有一个名为user的ViewModel,在用户内部我有一个名为address的第二个视图模型。
地址遍布各地,所以我计划拥有以下\
的ViewModels:
...阿拉 user.address.addyline1,business.address.addyline1
所有这些都将在其中包含地址。
@Html.EditorFor(model => model.address)
工作正常,但不使用我在
中创建的模板&则须─GT; shared-> editortemplate-> address.cshtml
@Html.EditorFor(model => model.address, "Address")
根本不起作用。
答案 0 :(得分:1)
嗯,你通常在放置模板名称"_AddressPartial"
时,你不会使用put“cshtml”部分对你有效,但我认为你只想省略那个参数并放置你的自定义剃须刀“〜/ Views / Shared / EditorTemplates / address.cshtml”中的模板
答案 1 :(得分:1)
我同意@jbtule。只是从局部视图的名称中删除文件扩展名,你应该没问题。
您可以做的另一件事是控制Address
对象的呈现方式,而不必每次都指定部分视图模板,这样就可以创建所谓的EditorTemplate
。这是你如何做到的:
在ASP.NET MVC解决方案的EditorTemplates
文件夹下创建一个名为Views->Shared
的文件夹。
在该文件夹中,创建一个强类型视图,其名称与编辑器所需类型的名称相匹配(在您的情况下应该称为Address.cshtml
),并且您还可以将脚手架模板设置为{{1}为您生成一个随时可用的编辑器。而且你们都准备好了!剩下的就是添加
这里有关于如何执行此操作的example(请注意,它使用的是ASP.NET MVC2,当然还有ASPX视图引擎,但这个想法是一样的。)
希望这会有所帮助;)
答案 2 :(得分:1)
放置Address.cshtml
的文件夹的名称是
EditorTemplates
而不是EditorTemplate
(一个小的s
会产生很大的不同。)