1.The Controller Action
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
在view目录下新建一个目录User,然后再其中添加loginpage.aspx,其中loginpage.aspx :
<!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 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。