如何嵌套视图?

发布于 2024-11-05 02:49:03 字数 167 浏览 1 评论 0原文

我目前在视图中有一个 DIV,我在运行时(通过 jQuery)使用 .load() 为另一个控制器创建视图。这是可行的,但是当我查看页面时,div 是空的(当然)。我这样做是因为我还没有弄清楚如何在视图中嵌入视图。

我需要的是某种包含声明。我找到了 @RenderPage() 但不会发出控制器方法调用。

I currently have a DIV inside a view, which I .load() at runtime (via jQuery) with the create view for another controller. this works but when I look at the page the div is empty (of course). I'm doing this because I haven't figure out how to embed a view within a view.

what I need is some kind of inclusion statement. I found @RenderPage() but that won't issue a controller method call.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

踏雪无痕 2024-11-12 02:49:03

Html.Action 将允许您在进行该调用的视图中嵌套视图 - 通常您只会在返回部分视图的方法上执行此操作,但这将在这里完成工作。

请参阅 Html.Action 与 Html.RenderAction

Html.Action will allow you to nest a view inside of the view making that call - typically you would only do that on methods that return partial views, but that will get the job done here.

See Html.Action vs Html.RenderAction

冰之心 2024-11-12 02:49:03

在我看来,这是 MVC 最难的事情之一。您可以使用

@Html.DisplayFor(model=>model.something, "SomeDisplayTemplate")

,但这仅适用于仅显示视图,不适用于可编辑视图。对于这些,特别是在主模型有一个您想要为其提供编辑器的集合的(常见)用例中,您需要实现类似于 Jarret 在这里推荐的内容:

http://jarrettmeyer.com/post/2995732471/nested-collection-models-in-asp-net- mvc-3

This is one of the hardest things about MVC in my opinion. You can use

@Html.DisplayFor(model=>model.something, "SomeDisplayTemplate")

but this only works for display-only views, not so much editable views. For those, particularly in the (common) use case where the main model has a collection that you want to provide editors for, you need to implement something like what Jarret recommends here:

http://jarrettmeyer.com/post/2995732471/nested-collection-models-in-asp-net-mvc-3

安穩 2024-11-12 02:49:03

实际上,我使用 jQuery.Post 访问我的控制器,并返回一个 PartialView。

然后,我获取返回的 HTML 并使用 jQuery 将该 html 放入目标 div 中。

控制器代码

public ActionResult jQuery_GetEditPositionView(string id)
{
    PositionsRepository repository = new PositionsRepository();
    contract model = repository.Single(x => x.id == new Guid(id));
    return PartialView("ContractPositionEdit", model);
}

jQuery / Javascript

    function editPosition(id) {
        $.post('/Member/jQuery_GetEditPositionView', { id: id }, function (newHTML) {
            $('#newPositionDialog').html(newHTML);
            $("#newPositionDialog").dialog("open");
            $(".frmNewContract").validate();
        });
    }

I actually go to my controller using jQuery.Post and I return a PartialView.

I then take the returned HTML and use jQuery to place that html into the target div.

Controller code

public ActionResult jQuery_GetEditPositionView(string id)
{
    PositionsRepository repository = new PositionsRepository();
    contract model = repository.Single(x => x.id == new Guid(id));
    return PartialView("ContractPositionEdit", model);
}

jQuery / Javascript

    function editPosition(id) {
        $.post('/Member/jQuery_GetEditPositionView', { id: id }, function (newHTML) {
            $('#newPositionDialog').html(newHTML);
            $("#newPositionDialog").dialog("open");
            $(".frmNewContract").validate();
        });
    }
白鸥掠海 2024-11-12 02:49:03

如果您只是希望在视图中嵌入“视图”,则可以使用部分概念来实现此目的,请参阅Html.Partial()

例如,采用标准 ASP.NET 表示法:
<%= Html.Partial(stringpartialViewName) %>

或使用 Razor 语法:
@Html.Partial(stringpartialViewName)

例如:<%= Html.Partial("_myView") %> (这将是 _myView.ascx 在您的 Views\Shared 文件夹中,

祝您好运。

If you are just simply wishing to embed a 'view inside a view', you can accomplish this with the concept of partials, see Html.Partial().

For example in standard ASP.NET notation:
<%= Html.Partial(string partialViewName) %>

or with Razor syntax:
@Html.Partial(string partialViewName)

For example: <%= Html.Partial("_myView") %> (which would be _myView.ascx in your Views\<action> or Shared folder.

Good luck.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文