2012-03-04 2 views
0

В разделе бритвыMVC3 Как получить доступ к этому коду из представления?

@{ 
Like This 
} 

Мне нужно, чтобы иметь возможность вызвать функцию C#

static T Cast<T>(object o) 
{ 
return (T)o; 
} 

Для того, чтобы динамически бросало объект. Как я могу получить доступ к этому коду?

Я хотел бы быть в состоянии сделать это

someObject = Cast<someType>(someObject); 

Редактировать

Я пытаюсь реализовать общую модель представления.

Вот модель:

public class GenericVM<TEntity> where TEntity : class 
{ 
    public List<TEntity> Entities { get; set; } 
    public object Entity { get; set; } 
    public Type Type { get; set; } 
} 

Я заполняя объект GenericVM в контроллере затем передать его в к виду с @model dynamic.

Однажды в представлении, я пытаюсь использовать Тип от объекта, чтобы динамически вернуть модель в нужный тип.

+4

Ваша модель просмотра уже должна предоставлять представление с данными в нужную ему форму. Там действительно не должно быть необходимости делать это. – tvanfosson

+0

Не могу согласиться больше с tvanfosson. –

+0

@tvanfosson - Модель взгляда, будьте осторожны, это '@model dynamic', поэтому ее необходимо динамически переделать. –

ответ

2

Вы можете поместить его в расширение Html?

public static T Cast<T>(this HtmlHelper helper, object o) 
{ 
    return (T)o; 
} 

Тогда просто:

Html.Cast<string>(someString) 

С вашей точки зрения. Я использую строку здесь как пример использования, просто измените свой тип модели.

1

Может просто просто бросить его или я что-то упустил?

@{ 
    var someObject2 = (someType)someObject; 
} 

или

@{ 
    var someObject2 = someObject as someType; 
} 
+0

Его метод литья, кажется, принимает аргумент, который вы не предоставляете. –

+0

Не совсем, это вызовет ошибку. –

Смежные вопросы