Создать метку якоря в MVC2 - PullRequest
1 голос
/ 18 октября 2010

Возможно ли в MVC2 создать тег привязки, содержащий значения из ViewData?

например,

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

Этот код выше не отображает, а просто создает исключение?

Ответы [ 2 ]

3 голосов
/ 18 октября 2010

Да, это так.

Более того, шаблон по умолчанию будет отображать это поле в точности так, как вы написали, если вы используете расширения Display Html и связанную ViewModel.Просто украсьте поле в модели с правильным атрибутом DataType

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

. Для получения дополнительной информации см. этот ряд series.

EDIT :

Предположим, у вас есть следующая 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>

Пожалуйста, возьмите кофе и получите время, чтобы прочитать эту серию статей.Это очень просто и может адресовать больше, чем я пытаюсь написать в этом небольшом посте.;)

Надеюсь, это поможет!

1 голос
/ 18 октября 2010

Ответ здесь не так сложен, как многие думают ... это просто проблема с кавычками ("):

Попробуйте изменить внешние кавычки на одинарные кавычки ... Он завершает строку при использовании кавычек"в вашей разметке, а также в ["Email"] ...:)

<a href='mailto:<%: ViewData["Email"] %>'>Send Email</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...