Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在contentplaceholder中添加标题会添加第二个空标题标记_Asp.net Mvc_Title - Fatal编程技术网

Asp.net mvc 在contentplaceholder中添加标题会添加第二个空标题标记

Asp.net mvc 在contentplaceholder中添加标题会添加第二个空标题标记,asp.net-mvc,title,Asp.net Mvc,Title,我的母版页的head标记中有一个contentplaceholder 因为我想让我的页面标题代表当前页面的功能,并且因为我想让标题翻译成用户的语言,所以我在页面头部的contentplaceholder中添加了一个标题标记。一切都很愉快,但现在出现了第二个空的标题标签,偏离航线是无效的 有没有办法解决这个问题?在@Page指令中有一个名为Title的属性,用于设置页面的标题。它也可以作为页控件上的属性访问 您不需要通过内容占位符在标记中显式声明 至少对于使用母版页的基本ASP.NET页面是这样。

我的母版页的head标记中有一个contentplaceholder

因为我想让我的页面标题代表当前页面的功能,并且因为我想让标题翻译成用户的语言,所以我在页面头部的contentplaceholder中添加了一个标题标记。一切都很愉快,但现在出现了第二个空的标题标签,偏离航线是无效的


有没有办法解决这个问题?

在@Page指令中有一个名为Title的属性,用于设置页面的标题。它也可以作为页控件上的属性访问

您不需要通过内容占位符在标记中显式声明

至少对于使用母版页的基本ASP.NET页面是这样。对于ASP.NET MVC不太确定。

根据:

每个HTML文档的标题部分都必须有一个TITLE元素

因此,ASP.Net平台符合标准,并在页面中添加一个空的标题标记,以帮助您实现有效的标记-它不知道您将要通过内容占位符添加一个

在经典ASP.Net下,您可以选择:

  • 使用@page指令标题设置此标记的内容
  • 使用代码隐藏中的Page.Title属性以编程方式设置该值
  • 如果您使用的是ASP.Net MVC,则默认的Site.Master文件具有以下默认文本:

    <title><%= Html.Encode(ViewData["Title"]) %></title>
    
    在操作结果中,再次允许对页面标题进行编程访问


    通常,我使用HeadContent内容占位符来添加特定于页面的静态脚本和css链接。

    我遇到了同样的问题,这似乎有效。这是相当黑客,但同时也相当简单。只需在头部添加另一个title标记,将runat=“server”属性放入其中,然后将其可见性设置为false:

    <title visible="false" runat="server"><%-- hack to turn the auto title off --%></title>
    

    您可以

    清除masterpages标签上的runat=“server”属性

    设置标题的最佳方法是在此处的标记声明中使用标题属性:

    <%@ Page Title="PAGE NAME HERE" Language="C#" MasterPageFile="~/Controls/MasterPage/MasterPage.master"
    AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
    

    希望这有点

    我的标题需要翻译,因此需要包含所有翻译字符串的viewdata。title属性无法访问以下内容:(尝试将ContentPlaceholder放在标题标记中。虽然我不明白为什么您不能在控制器中计算翻译,并将正确的翻译传递给ViewData。请参阅以获取有关此方面的帮助。不,这不是问题。我的翻译工作正常。但我必须将翻译后的数据插入标题标记中。这无法解决问题。)e在@Page指令中完成。此外,我确实可以添加一个专用于标题的contentplaceholder。但这只解决了simptom,而不是原因。页面特定脚本和css导入确实存在。但我认为我也可以添加标题。似乎没有。我必须让我的控制器来做。这个解决方案使页面在任何时候都没有标题总之,我当时试图自己解决这个问题,但我通过另一种方式添加了另一个标记来解决这个问题。事实上,我之所以需要这样做,是因为我们的.NET1代码有一种方法可以为每个页面生成一个标题标记,.NET2标题是重复的。这对我来说很有效,并且是在现有代码中解决这个问题的最简单的方法bases。谢谢!为我工作。谢谢。如果我没有弄错的话,这是asp.net的经典方式。请注意asp.net-mvc标签。我会羞愧地低下头……哎呀!Web表单不经典;)哈哈
    <%@ Page Title="PAGE NAME HERE" Language="C#" MasterPageFile="~/Controls/MasterPage/MasterPage.master"
    AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
    
    Page.Title = "Your page title"