2010-10-18 80 views
1

MVC2中有可能創建一個包含ViewData值的定位標記嗎?在MVC2中創建一個mailto定位標記

例如

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

上面的代碼不渲染,只是引發異常?

+0

爲什麼不是這樣? :) – bzlm 2010-10-18 12:19:33

+0

@bzlm:...因爲我上面貼的代碼沒有渲染! – BlueChippy 2010-10-18 12:31:40

+0

你的意思是'<%: ... %>'的一部分?這聽起來更像是您的ViewData中沒有電子郵件條目。也許你應該嘗試與View Models合作? – bzlm 2010-10-18 12:32:58

回答

1

這裏的答案是不是有多達複雜會認爲..它只是一個引號(「)問題:

試着改變你的外引號單引號。當你使用它終止字符串」引號您的標記以及[「電子郵件」] ... :)

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

謝謝Yngve B. Nilsen:你真的看過這個問題! 這不是模型的一部分(當然,但那不相關) - 它創建一個可點擊的鏈接,當服務器沒有SMTP時,會彈出用戶端的電子郵件。 我的錯誤是當我使用單引號時,intellisense似乎不起作用。我現在意識到,它將其編碼爲鏈接而不是代碼。 – BlueChippy 2010-10-18 13:04:16

+1

不客氣..閱讀這個問題往往是答案的關鍵;) – 2010-10-18 13:29:26

3

是的。

此外,如果您使用Display Html擴展和關聯的ViewModel,默認模板將完全按照您所寫的方式呈現該字段。只是裝飾領域中使用正確的數據類型的模型屬性

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

請參閱this post系列進一步信息。

編輯

假設你有以下視圖模型

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> 

請喝杯咖啡,花些時間閱讀該文章系列。這很容易,可以解決的問題比我在這篇小文章中寫的更多。 ;)

希望它有幫助!

+0

你能指點我嗎?我想添加更多的電子郵件地址到「mailto」鏈接,但我無法讓它工作! – BlueChippy 2010-10-18 12:32:35

+0

@BlueChippy:看看我的帖子編輯 – Lorenzo 2010-10-18 12:50:06

相關問題