ASP.NET结束标记

时间:2016-06-14 10:08:04

标签: asp.net visual-studio webforms

当我在.aspx应用程序中的VisualStudio 2010中使用自动完成时,关闭控件标记时会有不同的默认完成:

<asp:CheckBox /> 
<asp:Label></asp:Label>

这种行为有解释吗?

<asp:CheckBox></asp:CheckBox>
<asp:Label />

不会无效。

4 个答案:

答案 0 :(得分:7)

标签关闭就像那样

<asp:Label runat="server"></asp:Label>

因为通常我们在

之间键入内容
<asp:Label runat="server" ID="lblOne">better start programming now</asp:Label>

复选框不是这种情况,我们在其中键入

<asp:CheckBox runat="server" Text="enable" ID="cbOne" />

我们在两个元素上都有Text字段,为什么在我们喜欢写的那边...看看这个例子,在Label上,或者在其他类似的控件上我们可能要编写的文本可能包含文本属性中不允许的字符,可能是复杂的CSS样式或者是什么......从另一侧的复选框只包含一个小文本(是的,不是,类似的东西)

<asp:Label ID="lblLabel" runat="server">
    This is a <b>"label"</b>
    <br />And one more line
</asp:Label>

and more example that compiles

<asp:Label ID="lblLabel" runat="server">
    This is a <b>"label"</b>
    <br />And one more line
    <asp:Literal runat="server" ID="ltrOneMore">One more Control Inside</asp:Literal>
</asp:Label>


---but this is not compile--

<asp:Label ID="lblLabel2" runat="server" 
    Text="This is a <b>"label"</b>
    <br /> and one more line" 
    />

最后的结果是做出的决定 - 也许我们需要向他们询问真正的真正原因。

现在这也不是编译

<asp:CheckBox runat="server" ID="cbMyChbx">one<asp:CheckBox>

在页面上渲染时的复选框是使用两个控件,一个输入和一个标签,因此他们可能需要帮助用户理解文本不在输入控件上。

答案 1 :(得分:7)

这是因为ASP.NET的Label控件是使用ParseChildrenAttribute修饰的,ParseChildren(false)CheckBox,而[ParseChildren(false)] public class MyControl : WebControl { ... } 不是。

您可以支持与自定义控件相同的行为,例如,如果您在Web表单编辑器中使用MyControl,则使用以下代码,Visual Studio将表现得像Label:

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
    final AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
            // If sign in fails, display a message to the user. If sign in succeeds
            // the auth state listener will be notified and logic to handle the
            // signed in user can be handled in the listener.
            if (!task.isSuccessful()) {
                Log.v(TAG+" hola", "signInWithCredential", task.getException());
                Toast.makeText(SignInActivityGoogle.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
            }
            else{
                actualizardatos();
            }
        }
    });
}

答案 2 :(得分:5)

use Slim\Views\Twig as View; protected $view; public function __construct(View $view){ $this->view = $view; } public function login_redirect($request, $response){ $this->view->render($response, 'testing.twig'); } 由于该元素没有内容,您可以使用/&gt;关闭标记。而不是使用单独的结束标记

<asp:CheckBox />

在Web窗体页面上显示静态文本,并允许您以编程方式操作

详细了解Web Server Control

答案 3 :(得分:1)

以上所有答案都有效,但还有一些其他问题。所有的asp控件最终都呈现为HTML控件,并且还定义了asp控件的行为方式。对于例如标签中的文本不必始终设置为

<asp:Label runat="server" ID="lblOne">better start programming now</asp:Label>

也可以按照以下方式完成

<asp:Label runat="server" ID="lblOne" Text="better start programming"></asp:Label>

现在两者都是正确的格式,因此说任何需要内容的控件都有一个单独的结束标记是无效的。它还取决于它在HTML中的呈现方式。例如,默认情况下,asp Label被渲染为span,并且不符合XHTML标准。希望这清楚,总是想到它将如何呈现,ASP试图坚持最终将呈现的内容。

欢呼声