电子邮件字段中的@符号在MVC3.0中导致运行时出现问题

时间:2011-08-17 16:42:21

标签: asp.net-mvc model-view-controller asp.net-mvc-3

电子邮件文本框在运行时从数据库中填充有效的电子邮件ID(比如patra.bikash@gmail.com)。 因此我得到运行时JS错误(动态文件),没有定义gmail。 (在MVC 3.0中) 不知道怎么解决这个问题?

如果它可以编译时间,那么我可以使用@前缀加倍来避免这个问题,但是如何在运行时解决它? 在下面的代码中,@ contacts.EmailAddress从我的ViewModel中获取patra.bikash@gmail.com。

<tbody id="BillingContactRows">
  @{
      if (Model.ContactList != null && Model.ContactList.Count > 0)
      {
         foreach (Models.Contact contacts in Model.ContactList)
         {
      <tr>
         <td>
               @if (contacts.Primary)
               {
                  <input type="radio" id="rdo.@contacts.ContactID" value="radio" checked="checked" name="contact" onclick=" SelectContact('@contacts.ContactID');" />
               }
               else
               {
                  <input type="radio" id="rdo.@contacts.ContactID" value="radio" name="contact" onclick=" SelectContact('@contacts.ContactID');" />
               }
         </td>
         <td>
               @contacts.ContactName
         </td>
         <td>
               @contacts.EmailAddress
         </td>
         <td>
               <span class="datatype3">
                  @contacts.Status
               </span>
         </td>
      </tr>
         }
      }
   }
</tbody>

1 个答案:

答案 0 :(得分:0)

根据HTML specification;

  

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。

简而言之,这意味着你不能将@符号用作单选按钮的id。

我建议你创建一个帮助方法,你可以调用它来将@符号翻译成另一个 - 也许是下划线 - 符号