ASP.NET Шаблон редактора MVC 2 для типов значений, int
-
11-07-2019 - |
Вопрос
Я хочу создать шаблон редактора MVC 2 для типа значения, т.е.int, кто-нибудь делал это с битами предварительного просмотра 1?
Большое спасибо
Решение
Я еще не пробовал предварительный просмотр 1, но они сделали то, о чем вы просите в этом видео channel9:
Они выполняют как DisplayFor, так и EditorFor, запускаются примерно через 2 минуты.
--Редактировать--
Для типа значения, т. е.но я смог заставить его работать таким же образом.
Создайте модель для перехода к моему представлению:
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; }
}
Свяжите представление с моделью, используя новую логику шаблона:
<%@ 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>
Затем создайте шаблон для каждого из типов, напримерInt32:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
Editor For My Int32: <%= Html.TextBox("abc", Model.ToString())%>
Я поместил это в Views\Shared\EditorTemplates\Int32.ascx
Другие советы
Сработает ли ответ Ника Кларка, когда вы отправите значения при обратной отправке?
В MVC2 preview 2 вызов Html.Textbox("abc", Model.toString()) отобразит текстовое поле с добавлением ".abc" к имени, например
<input id="StartDate_abc" name="StartDate.abc" type="text" value="02 Feb 09" />
что вызовет проблемы при обратной отправке и попытке UpdateModel().
Я создал шаблон редактора для даты и времени, у меня работает следующее:
/Просмотры/Общие/EditorTemplates/DateTime.ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %>
<%= Html.TextBox(String.Empty, Model.ToString("dd MMM yy")) %>
или, чтобы использовать DatePicker jQuery для всех ваших DateTimes добавьте ссылку на jQuery и jQueryUI либо на вашу главную страницу, либо на представление, содержащее вызов EditorFor.
/Просмотры/Общие/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>
Обновить:ASP.NET MVC3, используя синтаксис Razor:
@model System.DateTime
@Html.TextBox("", Model.ToString("dd MMM yy"))
<script type="text/javascript">
$("#@ViewData.ModelMetadata.PropertyName").datepicker({ dateFormat: 'dd M y' });
</script>
И чтобы использовать это, все, что вам нужно, на ваш взгляд, это:
@Html.EditorFor(model => model.DueDate)
-Мэтт
Я написал сообщение в блоге о том, как сделать это путем создания повторно используемых шаблонов в MVC 2.
В моем сообщении также объясняется связь между TemplateInfo
и шаблонами.