在7天-第6天逐步学习MVC(模型视图控制器)

MVC 2是安静的老和本文是多年后写的。我们建议您从我们开始阅读新鲜学习MVC 5从这里一步一步系列:http: / / www.codeproject.com/Articles/866143/Learn-MVC-step-by-step-in-days-Day 内容 所以,MVC 6天议程是什么? 第一天:控制器、强类型的视图和助手类 第二天:单元测试、路由和出站url 第三天:局部视图、数据注释,剃须刀,身份验证和授权 第四天:- JSON, Jquery、状态管理和中控制器 第五天:捆绑、缩小视图模型、异常处理和领域 实验室22:显示模式(MVCMobile) 介绍 步骤1:创建相应的页面 步骤2:——就是这样,solet的测试。 步骤3:——更多的定制和控制 步骤4:测试你的移动定制 实验室23:- MVC OAuth提供者 第一步:注册您的应用程序ID和关键 步骤2:创建一个MVC网站与OAuth身份验证 第三步:开始浏览 实验室24:- MVC模型绑定 介绍 步骤1:创建“EnterCustomer。aspx和控制器 步骤2:创建用户模型 步骤3:创建绑定该映射。 步骤4:将映射器与行动 步骤5:享受你的输出 实验室25:剃须刀布局 介绍 步骤1:创建页面布局 步骤2:创建视图和布局 步骤3:创建一个控制器和看到你的布局 实验室26:自定义Html辅助方法 介绍 步骤1:创建一个MVC项目与简单的类文件 步骤2:类标记为静态和添加方法 步骤3:使用助手类。 什么是Lastday吗? 你是全新的MVC吗? 不要错过MVC的面试问题的答案吗 所以,MVC 6天议程是什么? 6天我们有五大实验室:- 手机支持使用“这个”功能。集成应用程序使用Facebook、twitter或其他任何第三方网站通过使用OAuth”。使用模型绑定绑定用户界面和你的模型类,如果属性名称是不同的。剃须刀的布局。创建您自己的自定义视图引擎。 如果你错过了Asp.net MVC教程的前几天,下面是讨论什么主题的链接。 第一天:控制器、强类型的视图和助手类 http://www.codeproject.com/Articles/207797/Learn-MVC-Model-view-controller-Step-by-Step-in-7 第二天:单元测试、路由和出站url http://www.codeproject.com/Articles/259560/Learn-MVC-Model-view-controller-Step-by-Step-in-7 第三天:局部视图、数据注释,剃须刀,身份验证和授权 http://www.codeproject.com/Articles/375182/Learn-MVC-Model-View-Controller-Step-by-Step-in-7 第四天:- JSON, Jquery、状态管理和中控制器 http://www.codeproject.com/Articles/375182/Learn-MVC-Model-View-Controller-Step-by-Step-in-7 第五天:捆绑、缩小视图模型、异常处理和领域 http://www.codeproject.com/Articles/724559/Learn-MVC-Model-view-controller-Step-by-Step-in-7 实验室22:显示模式(MVCMobile) 介绍 这是一个小型设备如移动的世界。作为一个MVC developerand我们期望很多的支持 微软MVC相同的模板。现在桌面屏幕和手机屏幕大小有巨大的变化。 所以我们想创建不同的屏幕为桌面和不同屏幕的移动。例如我们将创建“回家。aspx”正常的桌面和“Home.mobile。aspx”移动。如果MVC可以自动检测设备类型和呈现适当的页面,将节省大量的工作。这是自动使用MVC显示模式”。 当任何HTTP请求到一个web应用程序这个HTTP请求的值称为“用户代理”。这种“用户代理”价值使用MVC显示模式和适当的视图选择和呈现为每个设备。让我们来做一个演示,看到它住在血和肉。 步骤1:创建相应的页面 让我们创建一个示例MVC项目两个视图”指数。桌面aspx”和“Index.Mobile。aspx”移动,如以下图所示。 也让我们添加一个控制器称为“家”控制器将调用“指数”的观点。 注意:你可以看到以下代码片段我们已经创建了一个行动结果指数。因为我们的视图名称和操作名称一样,我们不需要传递的视图名称返回视图();。 隐藏,复制Code

publicclassHomeController : Controller
{
publicActionResult Index()
        {
return View();
        }
}

步骤2:——就是这样,solet的测试。 这就是我们要做的。现在让我们去测试如果MVC显示模式实现了自己的承诺。 所以现在如果你去点击浏览器的控制器和动作你会看到下面的左手边的输出。如果你遇到相同的控制器和动作使用android手机模拟器,您将看到屏幕的右边部分。 在这个实验室模拟移动测试我们使用Opera移动模拟器。您可以从http://dev.opera.com/articles/opera-mobile-emulator/下载模拟器 步骤3:——更多的定制和控制 但如果我们佤邦nt更多的定制和控制:- 如果桌面显示“Index.aspx”。如果手机显示“Index.mobile.aspx”。如果Android手机显示“index . andria .aspx”。 我们已经实现了前两个条件。现在对于第三个条件,我们需要执行更多的额外步骤。放松,他们绝对是小的和婴儿步伐,但有伟大的结果。 第一步是添加一个页面“Index.android”。aspx "特别是android在你的视图文件夹,如下图所示。 下一步是对你的“Global.asax”做一些改变。cs”文件。第一步是添加“Webpages”名称空间,如下图所示。 下一步是对你的“Global.asax”做一些改变。cs”文件。第一步是添加“Webpages”名称空间,如下图所示。 隐藏,复制Code

using System.Web.WebPages;

第二步是使用“DisplayModeProvider”类并在“Modes”集合中添加一个“Android”条目,如下面的代码片段所示。下面的代码搜索字符串“Android”,如果找到它就呈现“Index.Android”。aspx页面”。 隐藏,复制Code

protectedvoid Application_Start()
{
DisplayModeProvider.Instance.Modes.
                Insert(0, newDefaultDisplayMode("Android")
            {
                ContextCondition = (context => context.
                    GetOverriddenUserAgent().IndexOf("Android", 
StringComparison.OrdinalIgnoreCase) >= 0)
            });
}

步骤4:测试你的移动定制 现在,如果您以Android为用户代理运行opera移动模拟器,如下图所示,您将看到Android页面(Index.android)。aspx)被渲染。 实验室23:- MVC OAuth提供者 对最终用户来说,最无聊的过程之一就是注册站点。有时那些冗长的表单和电子邮件验证只是把用户吓跑了。那么,通过验证用户使用现有的facebook / twitter / linkedin /等账户来让事情变得简单怎么样?因此,用户使用他已经拥有的东西,同时网站确保该用户是正确的用户。 这是通过使用MVC OAuth(授权的开放标准)实现的。 实现OAuth有三个步骤,见上图:- 注册你的应用并获得ID和密钥。使用第三方站点进行身份验证。身份验证完成后,浏览您的站点。 第1步:-注册你的应用程序,获得ID和密钥 所以第一步是在第三方网站上注册你的应用。对于这个实验室,我们将使用facebook进行开放身份验证。请注意,twitter、linked in和其他网站的步骤会有所不同。打开developers.facebook.com,点击“创建新应用”菜单,如下图所示。 输入“app名称”、“类别”,点击“创建app”按钮,如下图所示。 app注册完成后,点击显示按钮即可获得“app ID”和“app秘钥”,如下图所示。 步骤2:创建一个MVC站点,用于使用OAuth进行身份验证 现在我们有了ID和键,让我们继续创建一个MVC Internet应用程序。我们正在创建一个互联网应用程序,以便我们得到一些现成的或你可以说“OAuth”模板代码。 一旦项目被创建,打开“authorconfig”。从“App_start”文件夹下载。 在这个配置文件中,你会发现“RegisterAuth”方法,你会看到很多第三方站点的方法调用。取消“RegisterFacebookClient”方法的注释,并放入ID和键,如下面的代码所示。 隐藏,复制Code

publicstaticclassAuthConfig
{
publicstaticvoidRegisterAuth()
        {
// To let users of this site log in using their accounts from other sites such as Microsoft, Facebook, and Twitter,
// you must update this site. For more information visit http://go.microsoft.com/fwlink/?LinkID=252166

//OAuthWebSecurity.RegisterMicrosoftClient(
//    clientId: "",
//    clientSecret: "");

//OAuthWebSecurity.RegisterTwitterClient(
//    consumerKey: "",
//    consumerSecret: "");

OAuthWebSecurity.RegisterFacebookClient(
                appId: "753839804675146",
                appSecret: "fl776854469e7af9a959359a894a7f1");

//OAuthWebSecurity.RegisterGoogleClient();
        }
}

运行您的应用程序并复制localhost URL名称和端口号。 回到你的开发者FB门户,打开你刚刚创建的应用程序,点击设置,点击“添加平台”,如下图所示。 打开另一个对话框,选择网站,点击添加。 在URL中,给出本地主机URL和端口号,如下图所示。 第三步:开始浏览 以上就是全部设置,现在运行应用程序并单击log in。 屏幕打开了两个选项,一个在左手边是你的本地登录使用“表单”认证和右手边是你的第三方提供。点击facebookbutton,放入您的证书并享受输出。 实验室24:- MVC模型绑定 介绍 在学习MVC Day 1实验5中,我们使用HTML帮助器类来映射HTML UI和MVC模型对象。下面是一个简单的HTML表单,它执行了一个post到“SubmitCustomer”的操作。 隐藏,复制Code

<formid="frm1"method=post action="/Customer/SubmitCustomer">
            Customer code :- <inputname="CustomerCode"type="text"/>
            Customer name :- <inputname="CustomerName"type="text"/>
    <inputtype=submit/>
</form>

“SubmitCustomer”操作接受一个customer对象。这个“Customer”对象与在这些文本框中填充的数据一起自动生成,而不需要任何绑定和映射。 隐藏,复制Code

publicclassCustomerController : Controller
{
publicActionResult SubmitCustomer(Customer obj)
{return View("DisplayCustomer");}
}

您知道为什么customer对象会自动填充吗?这是因为customer类的文本框名称和属性名称是相同的。 隐藏,复制Code

publicclassCustomer
{
publicstring CustomerCode { get; set; }
publicstring CustomerName { get; set; }
}

但是,如果文本框名称与“Customer”类属性名称不相同呢? 换句话说,HTML文本框名称为“txtCustomerCode”,类属性名称为“CustomerCode”。这就是模型粘结剂的作用。 模型绑定器将HTML表单元素映射到模型。它充当HTML UI和MVC模型之间的桥梁。让我们为ModelBinder做一些手部练习。 步骤1:-创建“EnterCustomer”。aspx”和控制器 第一步是创建“EnterCustomer”。aspx视图,将采取“客户”数据。 隐藏,复制Code

<formid="frm1"method=post action="/Customer/SubmitCustomer">
            Customer code :- <inputname="TxtCode"type="text"/>
            Customer name :- <inputname="TxtName"type="text"/>
    <inputtype=submit/>
</form>

要调用这个表单,我们需要在“Customer”控制器中执行一个操作,因为你不能在MVC中直接调用视图,你需要通过控制器。 隐藏,复制Code

publicclassCustomerController : Controller
{
publicActionResult EnterCustomer()
        {
return View();
        }
}

步骤2:-创建客户模型 下一步是创建一个“Customer”模型。请注意“Customer”类的属性名称和HTML UI元素文本框名称是不同的。 隐藏,复制Code

publicclassCustomer
{
publicstring CustomerCode { get; set; }
publicstring CustomerName { get; set; }
}

步骤3:-创建执行映射的binder。 现在,因为UI元素名称和“Customer”类有不同的名称,我们需要创建“Model”绑定器。为了创建模型绑定类,我们需要实现“IModelBinder”接口。在下面的代码中,您可以看到我们是如何在“BindModel”方法中编写映射代码的。 隐藏,复制Code

publicclassCustomerBinder : IModelBinder
{
publicobject BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
HttpRequestBase request = controllerContext.HttpContext.Request;

string strCustomerCode = request.Form["TxtCode"];
string strCustomerName = request.Form["TxtName"];

returnnewCustomer
            {
                CustomerCode = strCustomerCode,
                CustomerName = strCustomerName
            };
        }
    }

步骤4:将映射器与行动 现在我们有了活页夹,HTML UI现在是时候连接它们了。查看下面的“SubmitCustomer”操作代码。属性绑定绑定绑定器和“Customer”对象。 隐藏,复制Code

publicclassCustomerController : Controller
{
publicActionResult SubmitCustomer([ModelBinder(typeof(CustomerBinder))]Customer obj) 
{

return View("DisplayCustomer");
}
}

步骤5:享受你的输出 现在点击调用客户数据输入屏幕的操作(“EnterCustomer”)。 当您填充数据并点击submit时,您将看到下面填充的“Customer”对象。 实验室25:剃须刀布局 介绍 布局就像ASP中的母版页面。净Web表单。母版页面为Web表单视图(ASPX)提供标准外观,而布局为razor视图(CSHTML)提供标准外观。如果你是剃须刀的新用户,请查看lab12 MVC剃须刀视图。 在这个实验室中,我们将看到如何实现剃须刀布局。 步骤1:创建页面布局 首先,我们需要创建一个布局页面。因此,创建一个新的MVC web应用程序,转到views文件夹,右键单击,添加新项目,并选择MVC布局页面模板,如下图所示。 在MVC布局页面中,我们需要定义将应用于所有razor页面的通用结构。你可以看到在下面的布局页面,我们有三个部分的标题,正文和页脚。页眉和页脚是自定义的部分,而“渲染体”的东西,来自MVC和显示体内容。 隐藏,复制Code

<div>
@RenderSection("Header")
@RenderBody()
@RenderSection("Footer")
</div> 

步骤2:-创建视图和应用布局 现在,一旦我们创建了布局,接下来要做的就是将该布局应用到视图。右键单击视图的共享文件夹并选择razor view。 如需应用版式页面,请选择“…”浏览选项,如上图所示,并选择版式页面如下图所示。 创建视图后,第一行代码指出页面使用的布局。它看起来如下面的代码所示。 隐藏,复制Code

@{Layout = "~/Views/Default1/_LayoutPage1.cshtml";}

视图中的最后一件事是填充所有section。页脚和页眉部分是自定义部分,所以我们需要使用@section命令,后面跟着部分名称和我们想要在这些部分中放入的内容。所有其他文本都是正文的一部分(@RenderBody())。 隐藏,复制Code

This is body
@section  Footer{Copyright 2015-2016}
@section Header{Welcome to my site}

简单地说,布局和razor视图代码之间的映射如下所示。 第3步:-创建一个控制器,看看你的布局在行动 现在我们已经设置了创建控制器和调用视图的动作的时间。您应该会看到如下所示的内容。您可以看到布局模板是如何应用于视图的。 实验室26:自定义Html辅助方法 介绍 在第一天,我们已经讨论了MVC助手类。它帮助我们以更有效的方式使用输入控件。当你输入' @Html。在MVC razor视图中,你会在智能感知中得到类似这样的东西。 Html助手方法让我们轻松快捷地创建Html输入控件,如文本框,单选按钮,复选框,文本区域。在这个实验室中,我们将进一步创建“自定义”助手方法。 要创建一个定制的HTML助手方法,我们需要使用扩展方法。在。net 3.5中引入了扩展方法的概念。 如果你是一个新扩展方法观看以下youtube视频www.questpond.com http://www.youtube.com/watch?v=Iu7OrL6vCOw 步骤1:创建一个MVC项目与简单的类文件 创建一个简单的MVC项目CustomHtmlHelperDemo。添加一个名为HelperSample的控制器和一个名为Index的操作。在MVC项目中创建一个新的文件夹并将其命名为ExtensionClasses。 步骤2:类标记为静态和添加方法 对于扩展方法,我们需要将类标记为静态。 隐藏,复制Code

public static class HelperExtension
{
}

在这个类中,让我们创建一个名为“HelloWorldLabel”的新静态方法,它将返回类型为MvcHtmlStringand接受类型为HtmlHelper的参数。 注意:请确保在声明第一个参数之前添加" this "关键字,因为我们的目标是为HtmlHelper类创建一个扩展方法。 隐藏,复制Code

publicstaticMvcHtmlStringHelloWorldLabel(this HtmlHelper helper)
{

}

步骤3:使用助手类。 最后一步是导入“System.Web.Mvc”。Html”名称空间。我们需要导入此名称空间,因为默认的TextBoxFor、TextAreaFor和其他html helper扩展方法在此名称空间中可用。只有当我们要使用其中一种扩展方法时,它才是必需的。 隐藏,复制Code

returnhelper.Label("Hello World");

只需在视图中编写以下代码并说build,您可能会得到如下所示的错误。 要解决上述错误,只需将using语句放在视图的顶部,如下所示 隐藏,复制Code

@using CustomHtmlHelperDemo.ExtensionClasses

构建应用程序,按F5并测试应用程序。 什么是Lastday吗? 我的最后一天将主要是关于如何集成Javascript框架的(Angular, KO)和MVC。 最后,你可以观看我关于WCF、Silver light、LINQ、WPF、设计模式、实体框架等不同章节的c#和MVC培训视频。请不要错过我的。net和c#面试问题和答案手册。 你对MVC是全新的吗? 如果你是一个全新的人,我建议从以下4个视频开始,大约10分钟,这样你就可以快速进入MVC。 实验1:-一个简单的Hello world ASP。净MVC应用程序。 实验2:在这个实验中,我们将看到如何使用视图数据在控制器和视图之间共享数据。 实验3:在这个实验中,我们将创建一个简单的客户模型,用一些数据进行处理,并在视图中显示相同的数据。 实验4:在这个实验中,我们将创建一个简单的客户数据输入屏幕,并在视图上进行一些验证。 从MVC 5开始 如果你想开始与MVC 5开始与下面的视频学习MVC 5在2天。 不要错过MVC的面试问题的答案吗 在这个7天系列中,我每推进一个实验室,我也更新了一篇单独的文章,讨论重要的MVC面试问题,这些问题在面试中被问到。到目前为止,我已经收集了60个有精确答案的重要问题,您可以从http://www.codeproject.com/articles/556995/model-view-controller-mvc-interview-question- and查看相同的问题 本文转载于:http://www.diyabc.com/frontweb/news1895.html

原文地址:https://www.cnblogs.com/Dincat/p/13456585.html