我一直在使用 ASP.NET,但我对带有 Razor 概念的 ASP.Net MVC 4 相当陌生。所以我的问题可能是基本的,但我感谢每一个帮助,因为我现在几天都找不到明确的答案(或者我正在寻找错误的东西)。问题是:如何在不使用索引方法的情况下访问视图中的控制器方法?
场景:
我有一个存储一些值的数据库,如日期、价格等......(变量在 Model.
我有一个设置视图索引的控制器
我有一个视图显示 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()
在控制器的方法中定义它时才可见,或者我可以像我一样编写一个额外的方法并在我的视图中调用它?如果我 c&p ShowSumOfAllPrices()
to的逻辑,它就可以工作Index()
。但我认为我不需要在我的 index 方法中定义所有内容。如果是这样,这将是一个大而胖的方法。因此,据我所知,有 3 种可能的方法,但并非所有方法都“不错”甚至有效:
- 定义
Index()
方法中的所有内容。 - 定义其他方法,但在 Index 方法中调用它们,因为这是在我的视图中显示它而不使用模型的唯一方法,因为我不想将这些数据存储在我的数据库中
- 我可以定义其他方法并在我的视图中直接调用它们而无需新页面,但只有此方法的结果显示在当前索引页面的内容下。
我希望我的问题是可以理解的,并且这个问题不像我以前那样被问过。