Как: Перезаписывать все Html.TextBox - ascx не вызывается! Зачем? - PullRequest
0 голосов
/ 26 февраля 2011

Как я могу добавить ко ВСЕМ текстовым полям на ВСЕХ сайтах aspx, например:

<%: Html.TextBoxFor(model => model.Firstname, new { style = "float: left; width: 4.1em;", maxlength = "4" })%>

функция javascript без их поиска и добавления вручную чего-то вроде:

new { onkeyup='Foo(this); return false;' }

Идея: написать ascx, как показано ниже!

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%: Html.TextBox(   string.Empty, 
                    ViewData.TemplateInfo.FormattedModelValue, 
                    new { onkeyup = "foo(this); return false;" })%>

Пожалуйста, позвольте нам сказать, что это ascx названо Test.ascx
и что оно хранится в \Views\Shared\EditorTemplates\.

Моя проблема в том, что Test.ascx не вызывается.
Почему?
Нужно ли добавить ссылку на все сайты ASPX?
* Отсутствует ли < System.String> в Inherit?

Любая помощь будет в порядке.

Заранее большое спасибо.

1 Ответ

1 голос
/ 27 февраля 2011

Для того, чтобы ваш шаблон редактора был вызван, вам нужно использовать:

<%= Html.EditorFor(model => model.Firstname) %>

а не:

<%= Html.TextBoxFor(model => model.Firstname, new { style = "float: left; width: 4.1em;", maxlength = "4" })%>

Используя Html.TextBox, вы явно прописываете это значение и хотите, чтобы <input type="text" ..., и вы не можете переопределить или заменить его. По этой причине рекомендуется использовать Html.EditorFor, поскольку он позволяет изменять способ визуализации путем определения пользовательского шаблона в папке Views\Shared\EditorTemplates.

Теперь, если ваш редактор называется: Test.ascx, вы можете вызвать его так:

<%= Html.EditorFor(model => model.Firstname, "Test") %>

или путем украшения свойства модели представления атрибутом [UIHint]:

[UIHint("Test")]
public string Firstname { get; set; }

, а затем просто:

<%= Html.EditorFor(model => model.Firstname) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...