本文概述
在ASP.NET MVC应用程序中,控制器定义用于处理用户请求并将视图呈现为响应的操作方法。控制器可以执行任何操作。
用户请求可以是以下任何一种:在浏览器中输入URL,单击链接或提交表单。
MVC应用程序使用Global.asax.cs文件中定义的路由规则。该文件用于解析URL并确定控制器的路径。现在,控制器执行适当的操作来处理用户请求。
ActionResult返回类型
ActionResult类是所有操作结果的基类。动作方法返回此类的实例。根据操作要执行的任务,可以有不同的操作结果类型。例如,如果一个动作是调用View方法,则View方法将返回从ActionResult类派生的ViewResult实例。
我们还可以创建操作方法,该方法返回任何类型的对象,例如:整数,字符串等。
下表包含内置的操作结果类型。
行动结果 | 辅助方法 | 描述 |
---|---|---|
ViewResult | 视图 | 它用于将视图呈现为网页。 |
PartialViewResult | 局部视图 | 它用于渲染局部视图。 |
RedirectResult | 重新导向 | 它用于通过使用其URL重定向到另一个操作方法。 |
RedirectToRouteResult | RedirectToAction RedirectToRoute | 它用于重定向到另一种操作方法。 |
ContentResult | 内容 | 它用于返回用户定义的内容类型。 |
JsonResult | 杰森 | 它用于返回序列化的JSON对象。 |
JavaScriptResult | 的JavaScript | 它用于返回可以在客户端上执行的脚本。 |
FileResult | 文件 | 它用于返回二进制输出以写入响应。 |
EmptyResult | (没有) | 它表示一个返回值, 如果操作方法必须返回空结果, 则使用该返回值。 |
添加动作方法
在这里,我们将为上一章介绍的控制器添加一个新的动作方法。
要向现有控制器添加操作,我们需要为控制器定义一个公共方法。添加欢迎操作方法后,我们的MusicStoreController.cs文件如下所示。
// MusicStoreController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplicationDemo.Controllers
{
public class MusicStoreController : Controller
{
// GET: MusicStrore
public ActionResult Index()
{
return View();
}
public string Welcome()
{
return "Hello, this is welcome action message";
}
}
}
输出:
要访问欢迎操作方法,请执行该应用程序,然后使用MusicStore / Welcome URL对其进行访问。它将产生以下输出。
动作方法参数
动作参数是用于从URL检索用户请求的值的变量。
从请求的数据收集中检索参数。它包括用于表单数据,查询字符串值等的名称/值对。控制器类根据RouteData实例为参数值定位。如果存在该值,则将其传递给参数。否则,将引发异常。
Controller类提供两个属性Request和Response,可用于获取处理用户请求和响应。
例
在这里,我们正在控制器中创建一个动作方法。此操作方法具有一个参数。控制器代码如下所示:
// MusicStoreController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplicationDemo.Controllers
{
public class MusicStoreController : Controller
{
// GET: MusicStrore
public ActionResult Index()
{
return View();
}
public string ShowMusic(string MusicTitle)
{
return "You selected " + MusicTitle + " Music";
}
}
}
输出:
在URL中,我们必须传递参数值。因此,我们通过此URL localhost:port-no / MusicStore / ShowMusic?MusicTitle = Classic执行此操作。它产生以下结果。
评论前必须登录!
注册