2012-03-04 10 views
0

はかみそりのセクションMVC3ビューからこのコードにアクセスするには?

@{ 
Like This 
} 

で、私は動的にオブジェクトをキャストするために

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

C#の関数を呼び出すことができるようにする必要があります。このコードにはどうすればアクセスできますか?

私は、一般的なビューモデルを実装しようとしています。この

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; } 
} 

私は@model dynamicとビューにそれを渡した後、コントローラにGenericVMオブジェクトを満たしています。

ビューでは、オブジェクトからタイプを使用して、モデルを適切なタイプに動的にキャストすることを試みています。

+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

実際には、それはエラーをスローします。 –

関連する問題