Вопрос

Я хочу создать шаблон редактора MVC 2 для типа значения, т.е.int, кто-нибудь делал это с битами предварительного просмотра 1?

Большое спасибо

Это было полезно?

Решение

Я еще не пробовал предварительный просмотр 1, но они сделали то, о чем вы просите в этом видео channel9:

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

Они выполняют как 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 и шаблонами.

Я нашел книгу Брэда Уилсона Блог чтобы иметь лучшие примеры и объяснения. Часть 3 в этой серии конкретно говорится о типах значений (String, decimal, Int32).

Наслаждайтесь!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top