私は ASP.NET を使用してきましたが、ASP.Net MVC 4 と Razor の概念にはかなり慣れていません。私の質問は基本的なものかもしれませんが、何日も明確な答えを見つけることができなかったので(または間違ったことを探しています)、すべての助けに感謝します。問題は、Index Method を使用せずにビュー内の Controller メソッドにアクセスするにはどうすればよいかということです。
シナリオ:
日付、価格などの値を格納するデータベースがあります... (変数はモデルで定義されています。
ビューインデックスを設定するコントローラーがあります
データベースの値を含む Indexpage を表示するビューがあります。
価格列のすべての値を合計したいのですが、結果をデータベースに保存したくありません。私の理解では、コントローラークラスのメソッドを介してデータベースにアクセスし、ビューでこのメソッドを呼び出します。
ステップごとに学習するために、コントローラーで固定値を定義して、この値をビューに表示する方法を確認しました。
コード:
Model:
[Range(1, 100)]
[DataType(DataType.Currency)]
public decimal Price { get; set; } // Amount of an entry
Controller:
public ActionResult Index()
{
return View(db.Amounts.ToList());
}
public ActionResult ShowSumOfAllPrices()
{
//For testing db is not called yet. Query must be defined and result written to a variable within this mehod
ViewBag.Price = 2;
return View();
}
View:
@*testmethod for displaying sumprize (first just wit test result) via controler*@
<table>
<tr>
<td>hallo @ViewBag.Price</td>
</tr>
</table>
ShowSumOfAllPrices()
メソッドで(コントローラー クラスで)のメソッド コンテンツを定義しない限り、結果は表示されません index()
。
問題は、ビュー内のメソッドの結果はIndex()
、コントローラーのメソッド内で定義した場合にのみ表示されますか?それとも、私が行ったように追加のメソッドを記述してビューで呼び出すことができますか? ShowSumOfAllPrices()
toのロジックを c&p するとうまくいきますIndex()
。しかし、index メソッドですべてを定義する必要はないと思います。もしそうなら、それは大きくて太った方法になります。したがって、私が見る限り、3つの可能な方法がありますが、すべてが「いい」または機能しているわけではありません。
- メソッドですべてを定義します
Index()
。 - 他のメソッドを定義しますが、それらのデータをデータベースに保存したくないため、モデルを使用せずにビュー内に表示する唯一の方法であるため、Index メソッドでそれらを呼び出します
- 他のメソッドを定義し、新しいページを作成せずに自分のビューでそれらを直接呼び出すことができますが、このメソッドの結果のみが現在のインデックス ページのコンテンツの下に表示されます。
私の質問が理解できることを願っています。この質問は以前の私のように尋ねられたものではありません。