ASP.NET MVC3 Html.EditorFor и свойство типа объекта - PullRequest
1 голос
/ 27 июля 2011

Я создаю пользовательский элемент управления в приложении MVC3.Моя модель представления выглядит так:

public class MyViewModel
{
    public object Value { get; set; }
}

Свойство Value может быть int, string или bool, поэтому я не могу использовать атрибут [DataType].

При создании модели представления:

var viewModel = new MyViewModel { Value = "" };

или

var viewModel = new MyViewModel { Value = 1 };

Я предполагаю, что этот код:

<%: Html.EditorFor(p => p.Value) %>

должен отображать ввод HTML типа textbox.К сожалению, ничего не отображается.

Все работает нормально, когда я использую значение bool или какую-то непустую строку.Вот пример:

var viewModel = new MyViewModel { Value = true };

Html.EditorFor отображает входные данные флажка:

Value property of type bool

Я провел некоторое исследование, но пока не нашел решения.

Ответы [ 2 ]

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

Я использовал:

 <%: Html.Editor("Value") %>

вместо:

 <%: Html.EditorFor(p => p.Value) %>

и все прекрасно работает!Текстовое поле отображается для пустой строки или значения int.Что не так с выражением p => p.Value?

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

Не прямой ответ, но вы не можете просто сделать свой ViewModel универсальным:

public class MyViewModel<T>
{
    public T Value { get; set; }
}

Таким образом, вспомогательный метод Html может определить во время компиляции, что именно представляет собой значение типа, и какой именно редактор должен отображаться.

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