将样式应用于<a href=""> tag placed inside C# code

时间:2016-04-25 06:46:35

标签: c# html css asp.net

I am using html code inside a .cs file to design a template for sending emails. I have added style tag to the <a href> tag, but it does not take effect when the email is actually sent. Here is the code:

public static void Email()
{
   StringBuilder sb= new StringBuilder();
   sb.Append("<a href='#' style='font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;color:#fff;text-decoration:none;line-height:2em;font-weight:bold;text-align:center;display:inline-block;border-radius:5px;text-transform:capitalize;background-color:#208ed5;margin:0;border-color:#208ed5;border-style:solid;border-width:10px 20px' target='_blank'>");
   sb.Append("link</a>");
}

5 个答案:

答案 0 :(得分:6)

使用反斜杠转义引号:

style=\"font-family:\'Helvetica Neue\',Helvetica,Arial,sans-serif;font-size:14px;color:#fff;text-decoration:none;line-height:2em;font-weight:bold;text-align:center;display:inline-block;border-radius:5px;text-transform:capitalize;background-color:#208ed5;margin:0;border-color:#208ed5;border-style:solid;border-width:10px 20px\"

答案 1 :(得分:3)

问题在于构建HTML字符串的方式......

在此代码中

"<a href='#' style='font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;color:#fff;text-decoration:none;line-height:2em;font-weight:bold;text-align:center;display:inline-block;border-radius:5px;text-transform:capitalize;background-color:#208ed5;margin:0;border-color:#208ed5;border-style:solid;border-width:10px 20px' target='_blank'>"

style属性将在此处style='font-family:'停止,因为打开样式规则的单引号已关闭...因此,您的其他规则甚至不会被视为此样式的参数。

解决方案:您真的不需要将font-family值包装在引号中..您可以说style='font-family:Helvetica,Arial,sans-serif;

如果您的字体系列名称中包含空格,则必须将其包装在引号中。

编辑1:如果您的font-family名称包含空格,则需要将它们用引号括起来。所以您必须将Helvetica Neue括在引号中。添加双引号并使用反斜杠转义其含义..如下所示..

style='font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;

答案 2 :(得分:1)

很简单,将.css文件中的样式定义为类,并在后端指定类。例如:

.css

sb.Append("<a href='#' class=' custom-style-a' .....>");

附加的html将是:

$query1 = "SELECT `user_id` FROM `it_user` WHERE (user_email_address = ? AND user_mobile_number_verified = NULL)";
          $stmt1 = $mysqli->prepare($query1);
          $stmt1->bind_param("s",$email);
          $stmt1->execute();
          if ($stmt1->affected_rows == 1) {
            //set registration flag to 1 stating that the users mobile number is already verified

            echo '<meta http-equiv="refresh" content="0; URL=\'../signin/\'"/>';
          }
          else
          {
            $registration_flag = 2;  
            //redirect user to error page
            //echo '<meta http-equiv="refresh" content="0; URL=\'../error/\'"/>'; 
          }     

优点:

易于实现,以后可以轻松维护样式。不需要复杂的格式,如有必要,请重新使用样式。

答案 3 :(得分:1)

使用双引号但使用转义字符,如下所示:

sb.Append("<a href=\"#\" style=\"font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-size:14px;color:#fff;text-decoration:none;line-height:2em;font-weight:bold;text-align:center;display:inline-block;border-radius:5px;text-transform:capitalize;background-color:#208ed5;margin:0;border-color:#208ed5;border-style:solid;border-width:10px 20px\" target=\"_blank\">");
sb.Append("link</a>");

或者你总是可以使用旧的连接方式:

string sb = "<a href=\"#\" style=\"font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-size:14px;color:#fff;text-decoration:none;line-height:2em;font-weight:bold;text-align:center;display:inline-block;border-radius:5px;text-transform:capitalize;background-color:#208ed5;margin:0;border-color:#208ed5;border-style:solid;border-width:10px 20px\" target=\"_blank\">";
sb += "link</a>";

答案 4 :(得分:0)

您不能在单引号内嵌套单引号。您在'Helvetica Neue'内使用style = '... 'Helvetica Neue' ...'。你应该这样做style = "... 'Helvetica Neue' ..."。“

此外,我看到你已经在锚元素周围有双引号,所以在样式之后直接添加双引号将是问题。在Bhojendro已经解释过之后,你必须在风格之后使用转义字符\"而不是"