asp.net-mvc – 从递归模型创建表单
发布时间:2020-12-16 04:08:35 所属栏目:asp.Net 来源:网络整理
导读:我有一个像这样的递归模型: public class Node{ public int Id { get; set; } public string Text { get; set; } public IListNode Childs { get; set; } public Node() { Childs = new ListNode(); }} 我正在使用此代码构建一个带有剃刀视图的树: ul @Dis
我有一个像这样的递归模型:
public class Node { public int Id { get; set; } public string Text { get; set; } public IList<Node> Childs { get; set; } public Node() { Childs = new List<Node>(); } } 我正在使用此代码构建一个带有剃刀视图的树: <ul> @DisplayNode(Model) </ul> @helper DisplayNode(Node node) { <li> @node.Text @if(node.Childs.Any()) { <ul> @foreach(var child in node.Childs) { @DisplayNode(child) } </ul> } </li> } 一切正常,我的树呈现,但我需要在树的每一行添加一个文本框,我想要输入这样的名称: Childs[0].Childs[1].Childs[2].Text 所以我的模型绑定将按预期工作. 有没有办法使用EditorTemplates或其他任何方法来实现这一目标? 我想避免在表单提交的javascript中构建输入名称. 解决方法
您可以使用尊重当前导航上下文的编辑器模板而不是@helper.
因此,为Node类型定义一个自定义编辑器模板(?/ Views / Shared / EditorTemplates / Node.cshtml): @model Node <li> @Html.LabelFor(x => x.Text) @Html.EditorFor(x => x.Text) @if (Model.Childs.Any()) { <ul> @Html.EditorFor(x => x.Childs) </ul> } </li> 然后在一些主视图中: @model MyViewModel <ul> @Html.EditorFor(x => x.Menu) </ul> 其中Menu属性显然是Node类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET成员:拒绝用户阻止CSS,页面无法正确呈现?
- asp.net-mvc – 已定义以下部分但尚未为布局页面“?/ Views
- asp.net-mvc – 返回HttpPostedFileBase以查看验证错误
- asp.net-mvc – 使旧会话Cookie无效 – ASP.Net标识
- ASP.NET Core 认证与授权[7]:动态授权
- 在ASP.NET中的Web.Config中模拟标签
- asp.net-mvc-3 – asp.net中的pageBaseType mvc3 razor –
- asp.net – Visual Studio无法在IIS中创建网站
- asp.net-mvc – 如何编辑表格数据(ASP MVC)
- asp.net-mvc – jQuery Ajax调用控制器