ASP.NET MVC笔记

1.[Authorize] 过滤器也支持指定Users 或Roles 属性,该属性要求用户必须登录,此外还要求用户必须在
允许的用户列表中或允许的角色成员。例如,如下代码仅允许2 个指定的用户,“scottgu”和“billg” 访
问/Dinners/Create 路径:
[Authorize(Users="scottgu,billg")]
public ActionResult Create() {
...
}
将特定的用户名直接写在代码中不易于将来的代码维护,更好的办法是定义一个roles(角色),然后通
过数据库或者活动目录(Active Directory)映射用户到角色中。ASP.NET 提供了一个内置的角色管理API
和一组内置的Role provider(包括SQL 和活动目录),帮助实现用户/角色的映射。我们接着更新代码,
仅允许admin 角色的用户访问/Dinners/Create URL。
[Authorize(Roles="admin")]
public ActionResult Create() {
...
}



2.public bool IsUserRegistered(string userName) {
return RSVPs.Any(r => r.AttendeeName.Equals(userName,
StringComparison.InvariantCultureIgnoreCase));


3.<% if (Request.IsAuthenticated) { %>

3.

dinner.RSVPs.Add(myRSVP);//添加一条RSVP表的记录,dinners表跟RSVP表式主外键的关系

4.

public ActionResult Index() {

var dinners = dinnerRepository.FindUpcomingDinners().ToList();

return View("Index", dinners);

5.首先将光标定位在一个controller action 方法体中,然后右键点击,在弹出菜单中选择Add View 菜单项,

就可以创建一个新的视图模板了

6.

[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Edit(int id, FormCollection formValues) {

...

}

当对重载的action 方法添加[AcceptVerbs] 属性后,ASP.NET MVC 根据进来的HTTP 动作,自动分发请求

给合适的action 方法。HTTP POST 请求/Dinners/Edit/[id] 将由上述Edit 方法负责处理,然而所有其他的

HTTP 请求/Dinners/Edit/[id] 将由之前定义的Edit 方法负责(该方法没有[AcceptVerbs]属性)

7.

Controller 类有一个ModelState 属性集合,可以用来提示传递到视图的model 对象是否有错误。ModelState

ASP.NET MVC Framework Step by Step 中文版

http://www.agiledon.com 制作; 本中文版来源于http://blog.entlib.com/entlibforum/Default.aspx; AgileDon 修订排版

中Error 记录识别模型属性的名称和错误信息,并允许指定友好的错误信息。

创建partial view模板,命名为DinnerForm.ascx,具体操作:

Views/Dinners右键选择Add->view,在弹出的Add View对话框中,对新的视图命名DinnerForm,并选择Create a partial view复选框,并指明将传入DinnerFormViewModel类,再点击Add按钮。

调用方法1.<% Html.RenderPartial("DinnerForm")%> 2.<% Html.RenderPartial("~Views/Dinners/DinnerForm.ascx")%>

.ToList()返回的是ActionResult类型,linq语句返回的是IQueryable<T>类型。

(int? page) .Skip((page??0)*pageSize) //C#操作符??,该操作在处理nullable类型时,如果page参数为空null,则对page赋值为0

添加[Authorize]过滤器属性到指定的方法上,如果它没有带任何参数,则强制要求用户请求action方法时必须登录,否则重定向到登陆页面。当重定向时,原来的请求url会作为querystring参数跟在url后面,在登录完成后再次重定向用户返回开始请求的页面。

在查询当前登录的用户名时,我们可以使用Controller基类公开的User.Identity.Name属性

public bool IsUserRegistered(string userName){

return RSVPs.Any(r => r.AttendeeName.Equals(userName,StringComparison.InvariantCultureIgnoreCase));

}

return Content("Thanks1"); //返回的类型是ActionResult

创建接口文件:

将光标定位到已经实现方法的类中,右键选择Refactor->Extract Interface,随后将弹出对话框并自动选择类中的所有公共的方法

创建实现接口方法的类文件(正好是上面的相反操作):

右键点击冒号后的接口->选择Implement interface '接口名'

原文地址:https://www.cnblogs.com/cw_volcano/p/1947608.html