5

強く型付けされたオブジェクトを含むViewBagを使用している場合、MVC Razorで、そのすべての要素がIntelliSenseに表示されるように定義(またはキャスト)する方法はありますか?

たとえば、私が持っているとしましょう

ViewBag.Movies.Name
ViewBag.Movies.Length

私はMoviesがオブジェクトタイプMovieであり、メンバーに名前と長さがあることを知っています

class Movie { 
    public string Name {get; set;}
    public string Length {get; set;}
}

モデルの場合と同じように、どういうわけかこれをキャストできますか

@model Transactions.UserTransactionDetails

MovieのメンバーがRazorで利用できるようにするには?

4

4 に答える 4

17

変数に格納できます。

var movie = (Movie)ViewBag.Movie;

次に、入力すると、@movie.のインテリセンスが生成されます。NameLength

于 2012-06-18T20:18:54.877 に答える
11

ビューに必要なすべての異なるオブジェクトのプロパティを含む ViewModel を使用します。

例えば

public class MovieTransactionViewModel 
{
   public List<Transaction> Transactions { get; set; }
   public List<Movie> Movies { get; set; }
}

次に、ビューでこれをモデルとして使用すると、ビューでインテリセンスが得られます。

そうすれば、モデルを変更しないので、EntityFramework は影響を受けません。

于 2012-06-18T20:56:15.787 に答える
3

VieWbag に近づかない: http://completedevelopment.blogspot.com/2011/12/stop-using-viewbag-in-most-places.html

他のモデルを含む新しい VieWModel を作成するだけです。

于 2012-06-18T20:24:38.987 に答える
1

いいえ。これは、ViewBag が厳密に型指定されていないためです。ダイナミクスと ExpandoObject を使用して実装されます。厳密に型指定されたモデルが必要な場合は、使用してみませんか?

于 2012-06-18T20:18:59.730 に答える