我很难掌握.NET中的MVC概念。我正在创建一个基本的Blog应用程序,主要是为了获得有关MVC的见识和技能。我只是不太了解。我目前不清楚的部分是Controller和View之间的关系。如果有人回答我,这将解决问题。
我有一个名为TestA的视图,它对应于我的控制器ControllerTestA。现在,我在ControllerTestA中添加了以下内容。
public ActionResult TestA (){ //do something }
现在,我需要知道我从TestA的视图以任何形式进行的所有回发是否都必须通过我的TestA Controller方法。因此,本质上,由于不同的原因,我可以使用不同的参数进行不同的回发。一些与一个回发一起使用,而另一些则与另一个回发一起使用。那是怎么做的?
希望在这里有所帮助。
最佳答案
MVC中没有“回发”之类的东西。与WebForms相比,视图仅呈现要发送到浏览器的HTML。浏览器发出任何类型的请求后,它都会直接发送给控制器,而不是视图。
至于关系:
TestAController
(注意:不是“ControllerTestA”),它将使用“/ TestA / *” URL。如果其中有TestA
方法,它将用作“/ TestA / TestA”。 View(someModel)
,它将在TestA.cshtml
文件夹(名称与您的控制器类似,但不带“Controller”后缀)中查找一个名为TestA.aspx
/ Views\TestA
的视图,该视图的名称类似于您的方法。someModel
呈现HTML。 至于参数或重载,有一些限制:
例:
public ActionResult TestA(
string someOptionalParameter, int? someOtherOptionalParam)
{
if (string.IsNullOrEmpty(someOptionalParameter)) { ... }
if (someOtherOptionalParam == null) { ... }
}
如果未将参数发布到服务器,则模型映射器会将您的参数设置为
null
。就像已经提到的Khalid一样-您不应混淆MVC和WebForms的概念。他们有很大的不同。 MVC没有可以发布到服务器的“视图状态”之类的东西。对于ASPX(或CSHTML)页面,它没有类似WebForm的生命周期。