gpt4 book ai didi

c# - MVC4 - 如何将 EditorFor() 与来自数据库的动态表单数据一起使用

转载 作者:太空宇宙 更新时间:2023-11-03 16:20:50 27 4
gpt4 key购买 nike

我的数据库中有名为 Sections 和 Fields 的表。部分包含字段。字段可以是文本框或复选框。我正在使用它来动态创建用于数据输入的 HTML 表单。

我有一个绑定(bind)到一个部分的 View :

@model Data.Section    

@using (Html.BeginForm("SaveSection", "MyController"))
{
@Html.ValidationSummary(true)

<div class="fields">
@Html.EditorFor(m => m.Fields)
</div>

<input type="submit" value="Save">
}

然后我的 EditorTemplates 文件夹中有一个 Field 的编辑器模板:

@model Photon.Data.Field

@if (Model != null)
{
<span class="label">@Html.DisplayFor(m => m.Name)</span>

<span class="field">
@Html.EditorFor(m => m.FieldValues)
</span>
}

(我有一个 FieldValues 的编辑器模板,但我认为这与这里无关。)

上述解决方案非常适用于列出文本框和复选框。当用户编辑它们然后单击“保存”时,它会回传到我的 Controller 方法:

    [HttpPost]
public ActionResult SaveSection(Section model)
{
// do some magic
}

传递到我的方法中的我的 Section 模型是有效的,并且绑定(bind)到页面中的字段。

这是我难倒的地方:在其中一些部分中,字段将需要以特定的 html 格式进行布局(例如水平放置或看起来像文档中的表格)——基本上它们不能只是列出。所以我的想法是为一个部分分配一个模板名称,然后用所有字段加载该模板,例如:

<div class="fields">
@if (Model.IsTemplated)
{
@Html.EditorFor(m => m.Fields, Model.TemplateName)
}
else
{
@Html.EditorFor(m => m.Fields)
}
</div>

如果我想以特定的 html 格式(而不仅仅是一个列表)布置所有这些字段,我的 Model.TemplateName View 会是什么样子?

这是我所在的地方:

@model IEnumerable<Data.Field>

<table border="1">
<tr>
<td>
How do I display one field here with EditorFor?
</td>
<td>
How do I display another field here with EditorFor?
</td>
<td>
How do I display and another field here with EditorFor?
</td>
</tr>
</table>

想法?我走的路对吗?

最佳答案

我不确定我是否正确理解了你的问题,但如果你设法到达最终 View ,那么在表格行中布置字段应该与此类似吗?

...
<tr>
@foreach(var fld in Model)
{
<td>
@Html.EditorFor(m => fld)
</td>
}
</tr>
...

(我现在不会坐在 Visual Studio 前面和 Razor 设计师一起,所以对于任何打字错误我深表歉意..)

关于c# - MVC4 - 如何将 EditorFor() 与来自数据库的动态表单数据一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13957536/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com