Html.Partial和Html.EditorFor的区别是啥

html-css019

Html.Partial和Html.EditorFor的区别是啥,第1张

html.partial是使用指定的Model执行指定的视图。

html.labelfor、textboxfor等,是按照label或textbox的方式输出模式

html.editorfor是使用指定的Model输出视图

此外,还有一个html.displayfor跟html.editorfor类似。

editorfor在输出数据的时候,如果不能满足其特殊需求,会使用TextboxFor来达成目的。

那么editorfor的特殊需求是什么呢?

1、editorfor会默认从shared\editortemplates文件夹里找Model类型名对应的视图文件。

2、可以对editorfor指定模板视图的文件名,如你的代码中的BasicCoreInfomationViewModel

至于DISPLAYFOR,默认的视图文件夹为displaytemplates

如果你的partial(本例中也就是Header.ascx)是在当前请求的controller下(也就是位于目录/Views/nameController下)或共享目录下(也就是/Views/Shared下),那么你只要把后缀.ascx去掉就行了,也就是把你的第26行换成<% Html.RenderPartial("Header.ascx")%>。

如果你的partial位于其它位置,那么你需要引用全虚拟目录,目录依你项目而定,形式如下:

<%: Html.Partial("~/Views/Shared/Partials/MyOtherPartial.ascx") %>

注意,这个时候需要.ascx后缀。

如果不明白的话,请补充问题,希望我能帮到你。

如果这对你有帮助话,请将此标为最佳答案,谢谢。

Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的。

Html.RenderPartial是直接将用户控件嵌入到界面上:

<%Html.RenderPartial("LogOnUserControl")%>

<%Html.RenderPartial("~/Areas/Comm/Views/Shared/LogOnUserControl.ascx")%>

注意:用第一种方法时,用户控件必须放在调用者同一目录下,也可以放在View/Shared中。