我一直在使用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