在MVC2中创建mailto锚标记

时间:2010-10-18 12:10:58

标签: asp.net-mvc-2

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

e.g。

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

上面的代码不会渲染,只会引发异常?

2 个答案:

答案 0 :(得分:3)

是的。

此外,如果您使用Display Html扩展和关联的ViewModel,默认模板将完全按照您所写的方式呈现该字段。只需使用正确的DataType属性

装饰模型中的字段
[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; }
}

并在Controller内部执行以下操作

[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>

请喝咖啡,抽出时间阅读该系列文章。它非常简单,可以解决的问题比我在这篇小文章中写的更多。 ;)

希望它有所帮助!

答案 1 :(得分:1)

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

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

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