Пользовательский элемент управления asp.net, добираясь htmlAnchor решает к href = “#\”

Эти виды вопросов всегда имеют тот же ответ: это зависит . Нет никакого волшебного правила, что необходимо следовать вслепую. Даже использование GOTO на современных языках программирования может быть выровнено по ширине: он когда-либо выгодный для использования ' goto' на языке, который поддерживает циклы и функции? Если так, почему?

, Таким образом, ответ: используйте голову и думайте о конкретной ситуации. В этом конкретном экземпляре имеют в виду, что можно всегда преобразовывать от varchar до nvarchar в базе данных, если это оказывается изменением требований.

24
задан Highstead 28 September 2009 в 21:22
поделиться

6 ответов

I had a similar issue when rendering the page with PageParser.GetCompiledPageInstance() or when the url was rewritten. For some reason the HtmlAnchor always resolved incorrectly (similar to what you have above).

Ended up just using a HtmlGenericControl, since you are manipulating it server-side anyway this may be a possibility for you.

HtmlGenericControl anchor = new HtmlGenericControl("a");
anchor.Attributes.Add("href", "#");
9
ответ дан 28 November 2019 в 23:30
поделиться

Это должно сработать.

<a href="javascript:void(0)">text</a>

Это должно сработать.

<a href="~/#">text</a>
0
ответ дан 28 November 2019 в 23:30
поделиться

Решение Брендана Ковица будет работать, однако мне не удалось его реализовать из-за того, как этот элемент управления работает. В итоге мне пришлось взломать его согласно следующему коду в коде позади:

lnk.Attributes.Add("href",Page.Request.Url.ToString() + "#");

Где lnk - это HtmlAnchor.

Причина этой проблемы заключается в том, что элемент управления находится не в том же каталоге, что и страница, и .Net пытается «разумно» решить вашу проблему за вас. Вышеупомянутое будет работать, хотя, если у кого-то есть лучшее решение, я все уши.

2
ответ дан 28 November 2019 в 23:30
поделиться

Мой тоже отлично работает ... У меня есть пользовательский элемент управления AnchorTag.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AnchorTag.ascx.cs" Inherits="JavascriptScroll.AnchorTag" %>
<a id="A1" href="#" runat="server" >Anchor Tag</a>

И я добавил его как:

<%@ Register src="AnchorTag.ascx" tagname="AnchorTag" tagprefix="uc1" %>

. . .

<uc1:AnchorTag ID="AnchorTag1" runat="server" />

. .

And it renders as expected:

 <a href="#" id="AnchorTag1_A1">Anchor Tag</a>

Please correct me if I'm doing something which is not expected...

0
ответ дан 28 November 2019 в 23:30
поделиться

Попробуйте удалить атрибут "runat" и обернуть то, что вы хотите связать;

<a href="#" >Your Link Text/Image Here</a>
0
ответ дан 28 November 2019 в 23:30
поделиться

РЕДАКТИРОВАТЬ: Включает вложенные пути

Мой тестовый проект отображает для меня правильную ссылку:

 http://localhost:2279/WebSite1/Default.aspx#

ASPX:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register src="control/WebUserControl2.ascx" tagname="WebUserControl2" tagprefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">    
          <uc1:WebUserControl2 ID="WebUserControl21" runat="server" />
    </form>
</body>
</html>

Элемент управления:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl2.ascx.cs" Inherits="WebUserControl2" %>
<a id="A1" href="<%# URLHelper("~/#") %>" runat="server" >here</a>

Контрольный код позади:

protected string URLHelper(string s)
{
    return Control.ResolveUrl(s);
}
0
ответ дан 28 November 2019 в 23:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: