在MVC2中是否可以创建包含ViewData值的锚标记?
e.g。
<a href="mailto:<%: ViewData["Email"] %>">Send Email</a>
上面的代码不会渲染,只会引发异常?
答案 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>