ASP.NET MVC modelo 2 editor para tipos de valor, int
-
11-07-2019 - |
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
Solução
Eu não tentei visualização 1 ainda, mas eles fizeram o que você está pedindo neste vídeo Channel9:
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.