gpt4 book ai didi

asp.net-mvc - Html 渲染不正确,并且没有使用 Ajax.ActionLinks 设置 Viewbag.Title

转载 作者:行者123 更新时间:2023-12-01 05:00:53 25 4
gpt4 key购买 nike

_ViewStart.cshtml

@{
Layout = Request.IsAjaxRequest() ? null : "~/Views/Shared/_Layout.cshtml";
}

_Layout.cshtml

...
</head>
<body>
<div id="NavigationPanel">
@{ AjaxOptions options = new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "ContentPanel",
OnBegin = "OnBeginAnimateContentPanel",
OnComplete = "OnCompleteAnimateContentPanel",
};}
<div>
<p>@Ajax.ActionLink("Users", "Index", "User", options)</p>
<p>@Ajax.ActionLink("Groups", "Index", "Group", options)</p>
<p>@Ajax.ActionLink("Permissions", "Index", "Permission", options)</p>
</div>
</div>
<div id="ContentPanel">
@RenderBody()
</div>
</body>
</html>

Global.Asax.cs

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Main", action = "Index", id = UrlParameter.Optional }
);
}

MainController.Index 操作:

public ActionResult Index()
{
return View();
}

主视图索引.cshtml

@{
ViewBag.Title = "Test-Index";
}

this is the Index View of the MainController

用户/组/权限 Controller 的索引 View +操作类似于主 Controller 的索引。标题设置为 ViewBag 和一些小测试文本。

这里出了一件事。

每个 View (用户/组/权限)的标题永远不可见,尽管当我单击这些 Ajax.ActionLInks 之一时, View 在 #ContentPanel 中正确呈现...但是当我检查 html 源代码时:

ContentPanel 中的内容是索引 View 中的内容???

为什么会这样以及如何为每个 Ajax.ActionLink 设置 View 标题?

<body>
<div id="NavigationPanel">
<p><a data-ajax="true" data-ajax-begin="OnBeginAnimateContentPanel" data-ajax-complete="OnCompleteAnimateContentPanel" data-ajax-mode="replace" data-ajax-update="#ContentPanel" href="/User">Users</a></p>
<p><a data-ajax="true" data-ajax-begin="OnBeginAnimateContentPanel" data-ajax-complete="OnCompleteAnimateContentPanel" data-ajax-mode="replace" data-ajax-update="#ContentPanel" href="/Group">Groups</a></p>
<p><a data-ajax="true" data-ajax-begin="OnBeginAnimateContentPanel" data-ajax-complete="OnCompleteAnimateContentPanel" data-ajax-mode="replace" data-ajax-update="#ContentPanel" href="/Permission">Permissions</a></p>
</div>
<div id="ContentPanel">
this is the text within the Index View of the MainController
</div>
</body>

最佳答案

当您查看源代码时,您正在查看最初加载的源代码;通过 AJAX 加载的内容将不会出现。但是,如果您使用 DOM 检查器,它将显示动态加载的内容。至少在 Chrome 中是这样的;我想其他浏览器也是一样的。

检查 DOM 检查器,看看代码是否符合您的预期(在 Chrome 和 Firefox 上右键单击“检查元素”)。

至于设置标题,这无法通过 AJAX 来完成,至少在没有 Javascript 帮助的情况下是这样。在您的部分 View 中,尝试以下 Javascript:

<script>
document.title = "My New Title Here";
</script>

关于asp.net-mvc - Html 渲染不正确,并且没有使用 Ajax.ActionLinks 设置 Viewbag.Title,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10235554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com