для вопроса № 1:
Используйте DisplayTemplate. В View / Shared создайте папку с именем DisplayTemplates. Затем добавьте частичное представление в эту папку с именем Gender.ascx. Убедитесь, что он не печатается строго.
разметка в этом файле будет выглядеть так:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Boolean>" %>
<span><%= Model ? "Male" : "Female" %></span>
Затем в вашей модели вы декорируете свойство Gender с помощью UIHint следующим образом:
[UIHint("Gender")]
public boolean Gender { get; set; }
В вашем View вы заставляете его использовать этот шаблон, используя DisplayFor
<%= Html.DisplayFor(model => model.Gender) %>
Если вы не можете использовать UIHint, вы можете указать название шаблона в DisplayFor
.
<%= Html.DisplayFor(model => model.Gender, "Gender") %>