【问题标题】:return PartialView[viewname, model] equivalent?返回 PartialView[viewname, model] 等效?
【发布时间】:2014-10-06 16:12:37
【问题描述】:

我有一个使用 RazorViewEngine 构建的站点,其中使用“_ViewStart.cshtml”将布局设置为“Shared/_Layout.cshtml”。然后,我有以下模块:

public class LogModule : NancyModule
{
    public LogModule()
    {
        Get["/log"] = _ =>
            {
                var list = GetLog().ToPagedList(1, 5);

                return View["Index", list];
            };

        Get["/log/{page:int}"] = _ =>
            {
                int pageNumber = _.page ?? 1;
                var list = GetLog().ToPagedList(pageNumber, 5);

                return View["_List", list];
            };
    }
}

以及以下观点:

索引.cshtml

@using Nancy.ViewEngines.Razor
@using PagedList
@inherits NancyRazorViewBase<IPagedList<LogModel>>

<h1>View Log</h1>    
<div id='container'>
    @Html.Partial("_List", Model)
</div>

_List.cshtml

@using Nancy.ViewEngines.Razor
@using PagedList   
@inherits NancyRazorViewBase<IPagedList<LogModel>>
<table class="table table-hover table-condensed">
    <thead>
        <tr>
            <th>Date</th>
            <th>Message</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var log in Model)
        {                                        
            <tr class="@log.Class">
                <td>@log.Date</td>
                <td>@log.Message</td>
            </tr>    
        }
    </tbody>
    <tfoot>
        <tr>
            <td colspan="2">
                <div class="pagination" data-current="@Model.PageNumber" data-count="@Model.PageCount">
                    <ul class="list-unstyled list-inline">
                        <li><a href="javascript:void(0)" class="pager first">|<</a></li>
                        <li><a href="javascript:void(0)" class="pager prev"><</a></li>            
                        <li class="active"><span>@Model.PageNumber / @Model.PageCount</span></li>
                        <li><a href="javascript:void(0)" class="pager next">></a></li>
                        <li><a href="javascript:void(0)" class="pager last">>|</a></li>
                   </ul>
                </div>
            </td>
        </tr>
    </tfoot>
</table>

最后,一些 javascript 代码用于管理对“/log/{page:int}”操作的 ajax 请求并将“容器”div 替换为结果。遗憾的是,此结果包含一个完整页面,包括 _Layout.cshtml并打破所有页面。

在 MVC 中,这是使用 return PartialView(viewName, Model) 解决的,但我在 NancyFx 中找不到类似的东西。我有什么遗漏吗?

【问题讨论】:

  • 部分视图和视图在MVC中是一样的,只是别名',你会在南希返回一个视图,一样。只需在视图中将您的布局设置为 null,这样它就不会加载默认的母版。
  • 尝试将其设置为 null,但没有成功。但是有一种类似的方法确实有效。我说它是问题的解决方案。还是谢谢你!
  • 很高兴您对它进行了排序,我很确定有更好的解决方案,但我不记得了,自从我升级 Razor 以使用官方版本后,可能有一个新错误,我去看看。

标签: razor nancy


【解决方案1】:

原来解决方案非常简单。只需使用这一行创建一个“空”布局文件:

@RenderBody()

然后在你的局部视图中使用它:

@{ Layout = "Shared/_EmptyLayout"; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多