Controller in depth

本文详细介绍了ASP.NET MVC中控制器方法如何返回ActionResult并处理不同类型的返回值,同时展示了一个简单的用户登录功能实现,包括控制器和视图代码。通过实践案例,读者可以深入理解控制器与视图之间的交互及基本的用户身份验证流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.The Controller Action

public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View(); }

An action method normally returns an ActionResult and can take zero or many arguments.一个action方法通常情况下返回ActionResult,能够带0个或者多个参数。

If the view name matches the action name, there is no need to specify it when calling return View(). ViewData is a IDictionary<string, object> at its core. The type is System.Web.Mvc.ViewDataDictionary, but we really only need to worry about the interface.

Action methods can return any object type, including void. If the type derives from System.Web.Mvc.ActionResult, then that result will be executed. If any other type is returned, the framework will call the ToString() method on it and return a ContentResult.

2.Simple Controllers Do Not Need A View

这里实现一个用户登陆的功能:

UserInfo.cs

public class UserInfo { public string UserName { get; set; } public string UserPassword { get; set; } }

在view目录下新建一个目录User,然后再其中添加loginpage.aspx,其中loginpage.aspx :

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>LoginPage</title> </head> <body> <div> <%using(Html.BeginRouteForm(new {controller = "user",action="process"})) { %> <%--表单数据,这里命名也不区分大小写--%> <p><label>密码1:</label><%=Html.Password("a.userpassword") %></p> <p><label>用户名1:</label><%=Html.TextBox("a.username") %></p> <p><input type="submit" /></p> <%} %> </div> </body> </html>

UserController.cs

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Chapter3.Models;namespace Chapter3.Controllers { public class UserController : Controller { // 这是个辅助的方法 bool AreEquals(string name, string psw) { return ((name.ToLower() == "user") && (psw.ToLower() == "psw")); } // 这里实现的页面的出示,这个函数的名字需要和view/user下的 // 文件的名字相同。 public ActionResult LoginPage() { ViewData["ViewState"] = "MVC ViewState"; return View(); } public ActionResult Process(UserInfo a, UserInfo b) { if (AreEquals(a.UserName, a.UserPassword) && AreEquals(b.UserName, b.UserPassword)) { return Content("登录成功"); } else // 这里实现页面的跳转 return RedirectToAction("Index", "Home"); } } }

在其中:return RedirectToAction("Index", "Home");实现页面的跳转,也就是实现一个没有view的controller。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值