我一直在使用ASP.NET,但我對帶有Razor概念的ASP.Net MVC 4相當陌生。所以我的問題可能是基本的,但我感謝每一個幫助,因爲我現在無法真正找到一個確定的答案(或者我正在尋找錯誤的東西)。問題是:如何在不使用索引方法的情況下訪問我的視圖中的Controller方法?帶剃刀的ASP.Net MVC4 - 訪問視圖中控制器方法的最佳正確方法
場景:
我有一個存儲,如日期,價格等一些值的數據庫...(變量模型中定義
我有一個控制器,這就是設置一個視點索引
我有一個視圖,顯示Indexpage與我的數據的基礎上的值。
我想總結價格colum的所有值,但不想將結果存儲在我的數據庫中。 在我的理解中,我通過我的Controller類中的Method訪問數據庫,並在我的視圖中調用此方法。
要逐步學習,我只是在控制器中定義了一個固定值,以瞭解如何在我的視圖中顯示此值。
的代碼:
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()
到Index()
的邏輯c & p。但我不認爲我需要在我的索引方法中定義所有內容。如果是這樣,這將是一個大而肥的方法。所以,據我看到有3種可能的方式,但不是所有的可能是「好」,甚至工作:
- 定義在
Index()
方法的一切。 - 定義其他方法,但是稱他們在指數方法,因爲它是我的看法中顯示它的唯一途徑,而不是使用模型,因爲我不希望將這些數據存儲在我的數據庫
- 我可以定義其他的方法和直接在我的視圖中調用它們而沒有新的頁面,但僅在currend索引頁的內容下顯示此方法的結果。
我希望我的問題是可以理解的,這個問題並沒有像我以前那樣問過。
一個建議:你知道關於Web窗體的一切,你需要忘記它。 MVC是一種不同的思維方式。查看www.asp.net/mvc上的一些示例和教程 – 2013-06-25 20:27:42