代码之家  ›  专栏  ›  技术社区  ›  BlueChippy

在MVC2中创建mailto锚定标记

  •  1
  • BlueChippy  · 技术社区  · 14 年前

    在MVC2中是否可以创建包含ViewData中的值的锚标记?

    例如

    <a href="mailto:<%: ViewData["Email"] %>">Send Email</a>
    

    2 回复  |  直到 14 年前
        1
  •  1
  •   Yngve B-Nilsen    14 年前

    这里的答案并不像很多人想象的那么复杂。。这只是一个引号(“)的问题:

    尝试将外部引号改为单引号。。当您在标记和[电子邮件]中使用引号时,它会终止字符串。。。:)

    <a href='mailto:<%: ViewData["Email"] %>'>Send Email</a>
    
        2
  •  3
  •   Lorenzo OnoSendai    14 年前

    是的。

    此外,如果使用Display Html扩展名和关联的ViewModel,默认模板将完全按照您编写的那样呈现该字段。只需用正确的数据类型属性修饰模型中的字段

    [DataType(DataType.EmailAddress)]
    public string EmailAddress { get; set; }
    

    请看 this post 系列以获取更多信息。

    编辑 :

    假设您有以下ViewModel

    public class CustomerModel {
        public string CustomerName { get; set; }
    
        [DataType(DataType.EmailAddress)]
        public string EmailAddress { get; set; }
    }
    

    在你的控制器内,执行以下操作

    [HttpGet]
    public ActionResult ViewCustomer( int id ) {
        CustomerModel cm = LoadCustomerByID( id );
        return View( cm );
    }
    

    您可以有一个名为Viewcustomer.aspx的视图,该视图强类型到CustomerModel的一个实例,并且在该视图中只有此代码

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyApp.CustomerModel>" %>
    
    <asp:Content ContentPlaceHolderID="MainContent" runat="server">
        <%= Html.DisplayForModel() %>
    </asp:Content>
    

    请喝杯咖啡,抽出时间读那篇文章。这很简单,而且比我在这篇小文章中要写的内容要多。;)