Опять о пользовательских шаблонах - PullRequest
0 голосов
/ 15 июля 2011

Несколько раз назад я спросил о проблеме с пользовательским шаблоном.Я нашел решение использовать не строго типизированное представление для пользовательского шаблона (для double типизированных свойств):

@{
   string id = ViewData.TemplateInfo.GetFullHtmlFieldId("");
   string name = ViewData.TemplateInfo.GetFullHtmlFieldName("");
   string value = string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0}", ViewData.ModelMetadata.Model);
} 
<input type="text" id="@id" name="@name" value="@value" />

Но я не могу найти информацию о том, как метод из TemplateInfo получает имя и идентификатор?Какой параметр мне следует передать им, если свойство является объектом сложного типа?

1 Ответ

1 голос
/ 26 июля 2011

По умолчанию они HtmlFieldPrefix

public string GetFullHtmlFieldName(string partialFieldName)
{
    return (this.HtmlFieldPrefix + "." + (partialFieldName ?? string.Empty)).Trim(new char[] { '.' });
}


public string GetFullHtmlFieldId(string partialFieldName)
{
    return HtmlHelper.GenerateIdFromName(this.GetFullHtmlFieldName(partialFieldName));
}

В вашем частичном представлении вы можете даже установить HtmlFieldPrefix на что-то из вашей модели представления

ViewData.TemplateInfo.HtmlFieldPrefix = Model.MyPrefix; // MOdel refers to your view model instance

В связанной заметкепосмотрите здесь: http://btburnett.com/2011/03/correcting-mvc-3-editorfor-template-field-names-when-using-collections.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...