【问题标题】:Change the html layout generated by EditorForModel without having 2 views在没有 2 个视图的情况下更改 EditorForModel 生成的 html 布局
【发布时间】:2012-11-13 22:07:56
【问题描述】:

我用

渲染我的 ViewModel

创建.cshtml:

@using (Html.BeginForm("Create","TestTemplate")) {      

    @Html.EditorForModel()
}

我不喜欢输出内容,因为所有的 div 都在另一个之下。如果我想要一个水平布局,其中一个 div 向左浮动到另一个 div?

当我的 Create.cshtml 视图中没有 html 时,如何使用 EditorForModel() 助手修改此类布局更改?

更新:

为什么我必须创建两个视图。在我在另一个 EditorTemplate-view 中调用 @Html.EditorForModel() 的那个中,我做了所有我也可以通过 EditorFor( x => x....) 在第一个视图中做的布局工作?这对我来说似乎很奇怪。

【问题讨论】:

标签: c# asp.net-mvc-4 editorformodel


【解决方案1】:

您想创建一个EditorTemplate。基本上在~/Views/Shared 中创建一个名为EditorTemplates 的新文件夹,然后在该文件夹中创建一个具有模型名称的新视图,例如Template.cshtml 或其他。

当您调用@Html.EditorForModel() 时,它将使用此视图作为模板。

【讨论】:

  • 看来我必须重新表述我的问题。请查看更新后的问题。
【解决方案2】:

这个问题已经很老了,但在我看来,还有另一种方法应该提到。尽管 MVC 不是 MVVM,但请尝试在该模式下多思考一些。由于生成的 HTML 只不过是页面的内容,因此它将像浏览器中的视图模型一样使用。格式化页面不是 HTML 的工作。尝试使用 CSS 修改页面布局,CSS 将用于在浏览器中呈现视图。

只需使用如下 CSS 选择器来更改表​​单布局、输入元素或仅更改特定输入元素:

form { your CSS here }
form input { your CSS here }
form input[name="NameOfInput"] { your CSS here }

如今,CSS 的力量几乎是无限的:让您的项目向左、向右或交替流动等等 ;-) 您也不需要创建两个视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 2019-04-17
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多