【问题标题】:ASP.NET MVC dynamically bind editor templateASP.NET MVC 动态绑定编辑器模板
【发布时间】:2015-04-20 16:29:51
【问题描述】:

是否可以在我的视图中动态添加编辑器模板,例如,在单击按钮后?

目前,我正在主视图中执行此操作,以将ObjectA 对象列表绑定到我的模型(在表单内):

@Html.EditorFor(x => x.ObjectA)

在编辑器模板中,我正在绑定ObjectA 的属性:

@Html.DisplayFor(x => x.ID)
@Html.CheckBoxFor(x => x.BoolA)

但如果我不想总是加载这个编辑器模板,有没有办法使用 JS 将它动态绑定到模型?

这是因为它向数据库发出了一个额外的请求,我可以通过允许用户选择是否发出请求来省略它。

这可能吗?

【问题讨论】:

    标签: c# asp.net-mvc model-binding mvc-editor-templates dynamic-binding


    【解决方案1】:

    您无法在客户端使用 EditorFor 执行此操作,因为剃须刀在服务器端转换为 html。

    如果您使用PartialView,您可以这样做,您可以在其中包含您的EditorFor

    您为此 PartialView 创建一个 ajax call with js,但在 axaj 调用中,您必须指定 id 才能在操作中查询该对象。

    最后,您将在页面中附加调用的结果、html 内容。

    【讨论】:

    • 所以你的意思是有一个我有 EditorFor 的部分视图。但是,您认为这样做会绑定到模型吗?我不会有前缀问题吗?
    • 我试过了,它没有绑定到模型(显然)。我决定在我的模型中添加一个额外的布尔值,以检查它是否应该发出请求,因此当用户单击按钮时,它会使用更新的模型刷新页面,该模型决定是否根据用户的选择显示更多数据
    • @sparta223 你试图让@Html.EditorFor(x => x.ObjectA)@Html.EditorFor(x => x)
    • 我做了一个局部视图,其中我只有 @Html.EditorForModel() 使用 ObjectA 作为模型
    • @sparta223 tis 是没有绑定的原因,您需要一个 空模型 属性为 ObjectA 并使用 @Html.EditorFor(x => x.ObjectA)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多