在asp.net视图中动态更改@section

时间:2012-10-04 09:40:12

标签: asp.net-mvc asp.net-mvc-3 razor

我正在开发asp.net MVC 3应用程序,我有一个布局页面,其中包含以下部分:

   <div class="rt-block">
                                <div id="rt-mainbody">
                                    @if (IsSectionDefined("BodyTitle"))
                                    {
                                        <div class="rt-headline">
                                            <h1 class="rt-article-title">
                                                @RenderSection("BodyTitle", false)
                                            </h1>
                                        </div>   
                                    }
                                    <div class="clear">
                                    </div>
                                    <div>
                                        @RenderBody()
                                    </div>
                                </div>
                            </div>

在“我的视图”中,我定义了这样的部分:

@section BodyTitle {
    <span>Verify</span> Your Identity
}

partail view here

此视图根据链接点击加载两个部分视图中的一个。

我希望在加载一个局部视图时,部分有不同的文本,在加载其他局部视图时它应该有不同的文本。如何更改局部视图的更改部分内容?

我试图将部分移动到部分视图,但在这种情况下它根本没有加载。我们不能在布局视图中声明的局部视图中定义剖面吗?

请建议

1 个答案:

答案 0 :(得分:0)

您无法在部分视图中定义部分。它们必须在主视图中定义。所以基本上你需要的是在点击链接时更新DOM的2个不同部分。实现此目的的一种可能方法是在控制器操作内部render the partial view to a string,然后返回包含具有相应部分内容的2个属性的JSON结果。

return Json(new
{
    partialHtml = RenderPartialViewToString("_SomePartial"),
    sectionHtml = RenderPartialViewToString("_SomeSection")
});

然后:

$.ajax({
    url: '...',
    type: 'POST',
    success: function(result) {
        // first update the partial
        $('#partialContainerId').html(partialHtml);

        // now update the section
        $('.rt-article-title').html(sectionHtml);
    }
});

您可以将部分内容部分外部化。