Pergunta

Eu quero criar um modelo de editor de MVC 2 para um tipo de valor ou seja, int, alguém fez isso com a visualização 1 bits?

Muitos agradecimentos

Foi útil?

Solução

Eu não tentei visualização 1 ainda, mas eles fizeram o que você está pedindo neste vídeo Channel9:

http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-ASPNET-MVC-2-Preview-1-with-Phil-Haack-and-Virtual-Scott/

Eles fazem tanto DisplayFor e EditorFor, começa a cerca de 2 minutos.

- Edit -

Por tipo de valor ou seja, int eu era capaz de fazê-lo funcionar da mesma forma.

Criar um modelo para passar ao meu ponto de vista:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        HomeModel model = new HomeModel();
        model.message = "Welcome to ASP.NET MVC!";
        model.number = 526562262;
        model.Date = DateTime.Now;

        return View(model);
    }
}

public class HomeModel
{
    public string message { get; set; }

    public int number { get; set; }

    public DateTime Date { get; set; }
}

Fazer a ligação vista com o modelo usando a nova lógica de modelo:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<HomeModel>" %>

<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<p>
    <% Html.EditorFor(c => c.message); %>
</p>
<p>
    <% Html.EditorFor(c => c.number); %>
</p>
<p>
    <% Html.EditorFor(c => c.Date); %>
</p>

Em seguida, criar um modelo para cada um dos tipos por exemplo Int32:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
Editor For My Int32: <%= Html.TextBox("abc", Model.ToString())%>

Eu coloquei isso em Views \ Shared \ EditorTemplates \ Int32.ascx

Outras dicas

trabalho resposta de Will Nick Clarke quando você enviar os valores no postback?

Em MVC2 visualizar 2, chamando Html.TextBox ( "abc", Model.ToString ()) irá processar uma caixa de texto com ".abc" acrescentado ao nome, por exemplo,

<input id="StartDate_abc" name="StartDate.abc" type="text" value="02 Feb 09" />

que irá causar problemas quando você postback e tentar UpdateModel ().

Eu fiz um modelo de editor para um DateTime, os seguintes trabalhos para mim:

/Views/Shared/EditorTemplates/DateTime.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %>
<%= Html.TextBox(String.Empty, Model.ToString("dd MMM yy")) %>

ou, para usar DatePicker do jQuery para todas as suas DateTimes adicionar uma referência para jQuery e jQueryUI, quer o seu Masterpage ou para a exibição que contém a chamada para EditorFor.

/Views/Shared/EditorTemplates/DateTime.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %>
<%= Html.TextBox("", Model.ToString("dd MMM yy")) %>
<script type="text/javascript">
    $("#<%= ViewData.ModelMetadata.PropertyName %>").datepicker({ dateFormat: 'dd M y' });
</script>

Update: ASP.NET MVC3 , usando a sintaxe Navalha:

@model System.DateTime
@Html.TextBox("",  Model.ToString("dd MMM yy"))
<script type="text/javascript">
    $("#@ViewData.ModelMetadata.PropertyName").datepicker({ dateFormat: 'dd M y' });
</script>

E para usar tudo que você precisa em sua opinião é:

@Html.EditorFor(model => model.DueDate)

-Matt

Eu tenho escrito um post no blog sobre como fazer isso através da criação de modelos reutilizáveis ??em MVC 2.

O meu post também explica a relação entre TemplateInfo e modelos.

Eu encontrei blogue ter os melhores exemplos e explicações. Part-3 das negociações da série especificamente sobre tipos de valor (string, decimal, Int32).

Aproveite!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top