55 个顶级 MVC 面试问题及答案 (PDF)
初学者 MVC 面试题及答案
1)什么是模型-视图-控制器(MVC)?
MVC 是一种用于开发 Web 应用程序的软件架构模式。它由三个对象处理:模型 (Model)、视图 (View) 和控制器 (Controller)。
2)在 MVC 应用程序中,模型-视图-控制器 (MVC) 代表什么?
在 MVC 模型中,
- 模型 (Model)– 它代表应用程序的数据域。换句话说,应用程序的业务逻辑包含在模型中,并负责维护数据。
- 视图 (View)– 它代表用户与之交互的用户界面。简而言之,所有用户界面逻辑都包含在视图中。
- 控制器 (Controller)– 控制器负责响应用户操作。根据用户操作,相应的控制器会在模型中进行响应,并选择一个视图来渲染,从而显示用户界面。用户输入逻辑包含在控制器中。
3)定义 MVC 所需的程序集是哪个?
MVC 框架定义在 System.Web.Mvc 程序集中。
4)控制器操作方法有哪些不同的返回类型?
控制器操作方法有以下不同的返回类型:
- View Result (视图结果)
- JavaScript Result (JavaScript 结果)
- Redirect Result (重定向结果)
- JSON Result (JSON 结果)
- Content Result (内容结果)
5)在 WebForm 应用程序和 MVC 应用程序中添加路由有什么区别?
要在 WebForm 应用程序中添加路由,我们使用 RouteCollection 类的 MapPageRoute() 方法;而在 MVC 应用程序中添加路由,我们使用 MapRoute() 方法。
6)为路由添加约束的两种方法是什么?
为路由添加约束的两种方法是:
- 使用正则表达式
- 使用实现 IRouteConstraint 接口的对象
7)MVC 有哪些优点?
- MVC 将项目分离到不同的部分,开发人员可以轻松地进行工作。
- 可以轻松编辑或更改项目的某个部分,从而降低项目的开发和维护成本。
- MVC 使您的项目更加系统化。
- 它明确区分了业务逻辑和表示逻辑。
- 每个 MVC 对象都有不同的职责。
- 开发可以并行进行。
- 易于管理和维护。
- 所有类和对象相互独立。
8)“beforeFilter()”、“beforeRender”和“afterFilter”函数在控制器中起什么作用?
- beforeFilter(): 此函数在控制器中的每个操作之前运行。这是检查活动会话或检查用户权限的合适位置。
- beforeRender(): 此函数在控制器操作逻辑之后、视图渲染之前调用。此函数不常用,但如果您在给定操作结束前手动调用 render(),则可能需要它。
- afterFilter(): 此函数在每个控制器操作和渲染完成后调用。它是最后一个运行的控制器方法。
9)MVC 中 Presentation(表示)、Abstraction(抽象)和 Control(控制)组件的作用是什么?
MVC 中 Presentation、Abstraction 和 Control 组件的作用如下:
- 表示 (Presentation): 它是应用程序中特定抽象的可视化表示。
- 抽象 (Abstraction): 它是应用程序中的业务领域功能。
- 控制 (Control): 它是一个组件,用于在系统内的抽象及其向用户的表示之间保持一致性,并与系统内的其他控件进行通信。
10)MVC 模型有哪些缺点?
MVC 模型的一些重要缺点如下:
- 模型模式有点复杂。
- 视图中的数据访问效率不高。
- 使用现代用户界面,使用 MVC 存在困难。
- 您需要多位程序员进行并行开发。
- 需要多种技术知识。
11)MVC 中的“ActionFilters”起什么作用?
在 MVC 中,“ActionFilters”可以在 MVC 操作执行时或执行过程中帮助您执行逻辑。
12)MVC 项目的执行步骤是什么?
MVC 项目的执行步骤包括:
- 接收应用程序的第一个请求
- 执行路由
- 创建 MVC 请求处理程序
- 创建控制器
- 执行控制器
- 调用操作
- 执行结果
13)什么是路由及其三个段?
路由有助于您确定 URL 结构并将 URL 映射到控制器。
路由的三个重要段是:
- ControllerName (控制器名称)
- ActionMethodName (操作方法名称)
- 参数
14)MVC 模式中如何进行路由?
有一组路由称为 RouteCollection,其中包含应用程序中注册的路由。RegisterRoutes 方法将路由记录在此集合中。路由定义了 URL 模式以及请求匹配该模式时要使用的处理程序。
MapRoute 方法的第一个参数是路由的名称。第二个参数是要匹配 URL 的模式。如果占位符未确定,第三个参数可以是默认值。
15)如何通过超链接从一个视图导航到另一个视图?
通过使用“ActionLink”方法,如下面的代码所示。下面的代码将创建一个简单的 URL,用于导航到“Home”控制器并调用“GotoHome”操作。
折叠/复制代码
<%= Html.ActionLink("Home", "Gotohome") %>
有经验者 MVC 面试题及答案
16)MVC 中如何维护 Session?
MVC 中的 Session 可以通过三种方式维护:TempData、ViewData 和 ViewBag。
17)TempData、ViewData 和 ViewBag 有什么区别?
- TempData: 当您从一个控制器转移到另一个控制器时,它有助于维护数据。
- ViewData: 当您从控制器转移到视图时,它有助于维护数据。
- ViewBag: 它是 ViewData 的一个动态包装器。
18)MVC 中的部分视图 (Partial View) 是什么?
MVC 中的部分视图用于渲染视图的一部分内容。它有助于减少代码重复。简单来说,部分视图允许在父视图内渲染一个视图。
19)如何在 MVC 中实现 Ajax?
在 MVC 中,Ajax 可以通过两种方式实现:
- Ajax 库
- Jquery
20)“ActionResult” (ActionResult) 和“ViewResult” (视图结果) 有什么区别?
“ActionResult”是一个抽象类,而“ViewResult”派生自“AbstractResult”类。“ActionResult”有许多派生类,如“JsonResult”、“FileStreamResult”和“ViewResult”。
如果您动态派生不同类型的视图,“ActionResult”是最佳选择。
21)如何在 MVC 中将结果以 JSON 格式返回?
为了以 JSON 格式序列化返回对象并在 MVC 中仅返回 JSON 数据,您可以在任何 MVC Web API 项目的 WebApiConfig.cs 类中添加以下代码。
22)视图 (View) 和部分视图 (Partial View) 有什么区别?
视图和部分视图的区别如下:
查看 | 部分视图 |
---|---|
它包含布局页面。 | 它不包含布局页面。 |
在渲染任何视图之前,会渲染 ViewStart 页面。 | 部分视图不检查 ViewStart.cshtml。我们不能在 ViewStart.cshtml 页面中放置部分视图的公共代码。 |
视图可能包含 body、html、head、title、meta 等标记标签。 | 部分视图专门用于在视图内渲染,因此它不包含任何标记。 |
与部分视图相比,视图不够轻量。 | 我们可以将常规视图传递给 RenderPartial 方法。 |
23)MVC 中有哪些结果类型?
在 MVC 中,有十二种结果类型,“ActionResult”类是主要类,其余 11 种是其子类型。
- ViewResult (视图结果)
- PartialViewResult (部分视图结果)
- EmptyResult (空结果)
- RedirectResult (重定向结果)
- RedirectToRouteResult (重定向到路由结果)
- JsonResult (JSON 结果)
- JavaScriptResult (JavaScript 结果)
- ContentResult (内容结果)
- FileContentResult (文件内容结果)
- FileStreamResult (文件流结果)
- FilePathResult (文件路径结果)
24)NonActionAttribute 的重要性是什么?
控制器类中的所有公共方法都被视为操作方法。如果您想阻止这种情况,您必须将公共方法分配给 NonActionAttribute。
25)默认路由 {resource}.axd/{*pathinfo} 的用途是什么?
默认路由可防止将对 WebResource.axd 或 ScriptResource.axd 等 Web 资源文件的请求传递给控制器。
26)如果实现多个过滤器,过滤器的执行顺序是什么?
过滤器的顺序如下:
- Authorization filters (授权过滤器)
- Action filters (操作过滤器)
- Response filters (响应过滤器)
- Exception filters (异常过滤器)
27)ASP.NET 过滤器最后执行的是哪种?
最后执行的是“Exception Filters”(异常过滤器)。
28)Razor 视图的文件扩展名是什么?
Razor 视图的文件扩展名是:
- .cshtml:如果编程语言是 C#
- .vbhtml:如果编程语言是 VB
29)为路由添加约束的两种方法是什么?
为路由添加约束的两种方法是:
- 使用正则表达式
- 使用实现 IRouteConstraint 接口的对象
30)在哪些情况下不实现或不需要路由?
不需要路由的两种情况是:
- 当找到匹配 URL 模式的物理文件时
- 当对 URL 模式禁用路由时
5年经验的 MVC 面试题
31)MVC 有哪些特性?
MVC 的特性如下:
- 易于测试,可测试性强,可扩展性强,可插拔的框架。
- 提供对 HTML 和 URL 的完全控制。
- 利用 ASP.NET、JSP、Django 等现有功能。
- 清晰的逻辑分离:模型、视图、控制器。通过业务逻辑、UI 逻辑和输入逻辑分离应用程序任务。
- URL 路由实现 SEO 友好 URL。强大的 URL 映射,实现可理解和可搜索的 URL。
- 支持测试驱动开发 (TDD)。
32)MVC 的现实生活中的例子是什么?
以下是一个 MVC 的现实生活中的例子:
- 假设你去一家餐厅。你不会去厨房自己做饭,虽然你可以在家做到。相反,你只是进去等待服务员过来。
- 现在服务员过来找你,你点餐。服务员不知道你是谁,也不知道你想要什么,他只是写下你的点餐详情。
- 然后,服务员去厨房。在厨房里,服务员不制作你的食物。
- 厨师为你准备食物。服务员会收到你的订单以及你的桌号。
- 厨师然后为你准备食物。他使用食材来烹饪。假设你点了一个蔬菜三明治。然后他需要面包、番茄、土豆、彩椒、洋葱、甜菜、奶酪等,这些都来自冰箱。
- 厨师最后把食物交给服务员。现在服务员的任务是把食物拿到厨房外面。
- 现在服务员知道你点了什么菜,以及它是如何上菜的。
在这种情况下,
View= You Waiter= Controller Cook= Model Refrigerator= Data
33)3 层架构和 MVC 架构有什么区别?
3 层架构和 MVC 架构的区别如下:
参数 | 三层架构 | MVC 架构 |
---|---|---|
沟通 | 这种架构模式从不直接与数据层通信。 | 所有层都通过三角形拓扑直接通信。 |
用途 | 3 层:广泛用于 Web 应用程序,其中客户端、数据层和中间件运行在物理上分离的平台。 | 通常用于在单个图形工作站上运行的应用程序。 |
34)如何在 JSP 中使用 MVC 架构?
下面的示例展示了如何在 JSP 中使用 MVC 架构:
- 我们以一个包含两个变量“email”和“password”的表单为例,这就是我们的视图层。
- 用户输入 email 和 password 并点击提交后,操作会传递到 mvc_servlet,其中 email 和 password 会被传递。
- 这个 mvc_servlet 就是控制器层。在这里,请求被发送到 bean 对象,该对象充当模型层。
- email 和 password 的值被设置到 bean 中并保存以备将来使用。
- 从 bean 中获取值并在视图层显示。
Mvc_example.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>MVC Guru Example</title> </head> <body> <form action="Mvc_servlet" method="POST"> Email: <input type="text" name="email"> <br /> Password: <input type="text" name="password" /> <input type="submit" value="Submit" /> </form> </body> </html>
Mvc_servlet.java
package demotest; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Mvc_servlet */ public class Mvc_servlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Mvc_servlet() { super(); // TODO Auto-generated constructor stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String email=request.getParameter("email"); String password=request.getParameter("password"); TestBean testobj = new TestBean(); testobj.setEmail(email); testobj.setPassword(password); request.setAttribute("gurubean",testobj); RequestDispatcher rd=request.getRequestDispatcher("mvc_success.jsp"); rd.forward(request, response); } }
TestBean.java
package demotest; import java.io.Serializable; public class TestBean implements Serializable{ public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } private String email="null"; private String password="null"; }
Mvc_success.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="demotest.TestBean"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Success</title> </head> <body> <% TestBean testguru=(TestBean)request.getAttribute("gurubean"); out.print("Welcome, "+testguru.getEmail()); %> </body> </html>
35)Spring 中的 MVC 是如何工作的?
Spring 中的 MVC 工作方式如下:
- DispatcherServlet 接收请求。
- 之后,DispatcherServlet 与 HandlerMapping 通信。它还调用与该特定请求关联的控制器。
- 控制器通过调用服务方法来处理此请求,DispatcherServlet 返回一个 ModelAndView 对象。
- 将视图名称发送给 ViewResolver 以查找要调用的实际视图。
- 之后,DispatcherServlet 将视图传递给以渲染结果。
- 通过使用模型数据,视图渲染并将结果返回给用户。
36)创建 MVC 应用程序时需要注意的重要事项是什么?
创建 MVC 应用程序时需要注意的事项如下:
- 您需要记住 ASP.NET MVC 并不是对 ASP.NET Web Forms 应用程序的替代。
- MVC 应用开发的路径应根据应用程序的需求和 ASP.NET MVC 提供的功能来决定,以适应特定的开发需求。
- 与基于 Web Forms 的应用程序相比,ASP.NET MVC 的应用程序开发过程更复杂。
- 通过分离应用程序任务,应用程序的可维护性始终更高。
37)Web Forms 和 MVC 有什么区别?
Web Forms 和 MVC 的区别如下:
参数 | Web Forms | MVC |
---|---|---|
模型 | Asp.Net Web Forms 遵循事件驱动的开发模型。 | Asp.Net MVC 使用基于 MVC 模式的开发模型。 |
使用时间 | 自 2002 年以来一直存在。 | 首次发布于 2009 年。 |
视图状态支持 | Asp.Net Web Forms 支持客户端的视图状态进行状态管理。 | .Net MVC 不支持视图状态。 |
URL 类型 | Asp.Net Web Forms 具有基于文件的 URL。这意味着 URL 中存在文件名,并且它们必须实际存在。 | Asp.Net MVC 具有基于路由的 URL,这意味着 URL 会被重定向到控制器和操作。 |
语法 | Asp.Net MVC 遵循 Web Forms 语法。 | Asp.Net MVC 遵循可定制的语法。 |
视图类型 | Web Forms 视图与 Code behind (ASPX-CS),即逻辑,紧密耦合。 | MVC 视图和逻辑始终分开存放。 |
一致的外观和感觉 | 它具有主页面以提供一致的外观。 | Asp.Net MVC 具有布局以提供一致的外观。 |
代码重用性 | Web Forms 提供用户控件以实现代码重用。 | Asp.Net MVC 提供部分视图以实现代码重用。 |
HTML 控件 | 对渲染的 HTML 控制较少。 | 完全控制 HTML。 |
状态管理 | 控件的自动状态管理。 | 手动状态管理。 |
TDD 支持 | 需要弱或自定义 TDD。 | 鼓励并包含 TDD! |
38)如何在 CodeIgniter 中显示内容?
以下是 CodeIgniter 中显示内容的示例代码。
<?=$title?> As opposed to <?php echo $title; ?> Control structures are usually written as follows <?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?><p> </li> <?php endforeach; ?>
39)编写代码以在 CodeIgniter 中演示模型、视图和控制器。
以下是在 CodeIgniter 中演示模型、视图和控制器的代码。
打开位于 application/controllers 的 Welcome.php 控制器文件。
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
按如下方式更新 index:
public function index() { $this->load->model('customers_model'); $data['customer'] = $this->customers_model->get_customer(3); $this->load->view('welcome_message',$data); }
在 application/models 中将以下代码写入 customer_model.php。
<?php class Customers_model extends CI_Model { public function get_customer($id) { $data['id'] = 3; $data['first_name'] = 'John'; $data['last_name'] = 'Doe'; $data['address'] = 'Kingstone'; return $data; } }
打开位于 application/views/welcome_message.php。
application/views/welcome_message.php
将代码替换为以下内容:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>CodeIgniter MVC Basics</title> </head> <body> <h3>Customer Details Card</h3> <p>Customer ID : <strong><?=$customer['id']?></strong></p> <p>First Name : <strong><?=$customer['first_name']?></strong></p> <p>Last Name : <strong><?=$customer['last_name']?></strong></p> <p>Address : <strong><?=$customer['address']?></strong></p> </body> </html>
40)可以使用 WebForms 和 MVC 创建 Web 应用程序吗?
是的。您需要在 Web Forms 应用程序中包含以下 MVC 程序集引用,以创建混合应用程序。
System.Web.Mvc System.Web.Razor System.ComponentModel.DataAnnotations
41)如何为 ASP.NET Web API 操作分配别名?
与 ASP.NET MVC 一样,我们可以通过使用“ActionName”属性为 Web API 操作提供别名,如下所示:
[HttpPost] [ActionName("SaveStudentInfo")] public void UpdateStudent(Student aStudent) { StudentRepository.AddStudent(aStudent); }
42)MVC 和 WebAPI 的主要区别是什么?
MVC 和 WebAPI 的主要区别如下:
MVC 框架用于开发具有用户界面的应用程序。为此,可以使用视图来构建用户界面。
WebAPI 用于开发 HTTP 服务。其他应用程序也可以调用 WebAPI 方法来获取数据。
43)如何确保 Web API 只返回 JSON 数据?
为了让 Web API 将返回的对象序列化为 JSON 格式并仅返回 JSON 数据,您应该在任何 MVC Web API 项目的 WebApiConfig.cs 类中添加以下代码。
//JsonFormatter //MediaTypeHeaderValue Config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json")); 1 2 3 //JsonFormatter //MediaTypeHeaderValue Config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"))
44)MVVM 和 MVC 有什么区别?
MVVM 和 MVC 的重要区别如下:
MVC | MVVM |
---|---|
Controller 是应用程序的入口点。 | View 是应用程序的入口点。 |
Controller 和 View 之间存在一对多关系。 | View 和 ViewModel 之间存在一对多关系。 |
View 不引用 Controller。 | View 引用 ViewModel。 |
MVC 是旧模型。 | MVVM 是一个相对较新的模型。 |
难以阅读、修改、单元测试和重用此模型。 | 当存在复杂数据绑定时,调试过程会很复杂。 |
MVC 模型组件可以独立于用户进行测试 | 易于单独进行单元测试,并且代码是事件驱动的。 |
45)AngularJS 中的 MVC 是什么?
Angular.js 遵循 MVC 架构,下面显示了 MVC 框架的图示。
- Controller 代表具有业务逻辑的层。用户事件会触发存储在控制器中的函数。用户事件是控制器的一部分。
- Views 用于表示提供给最终用户(end-users)的表示层。
- Models 用于表示您的数据。模型中的数据可以很简单,例如只包含原始声明。例如,如果您正在维护一个学生应用程序,则数据模型可以只包含学生 ID 和姓名。或者,它也可以很复杂,拥有结构化的数据模型。如果您正在维护一个汽车所有权应用程序,您可以拥有结构来定义车辆本身,例如其发动机容量、座位容量等。
46)MVC 在 AngularJS 中起什么作用?
以下是 AngularJS Controller 工作方式的简单定义。
- Controller 的主要职责是控制传递给视图的数据。Scope 和 View 之间存在双向通信。
- 视图的属性可以调用 Scope 上的“函数”。此外,视图中的事件可以调用 Scope 上的“方法”。下面的代码片段提供了一个简单的函数示例。
- 定义控制器时定义的函数 $scope 内部函数,用于返回 $scope.firstName 和 $scope.lastName 的连接。
- 在 AngularJS 中,当您将一个函数定义为变量时,它被称为 Method。
- 数据以这种方式从 Controller 传递到 Scope,然后数据在 Scope 和 View 之间双向传递。
- Scope 用于将模型公开给视图。模型可以通过 Scope 中定义的方法进行修改,这些方法可以通过来自视图的事件触发。我们可以定义从 Scope 到 Model 的双向模型绑定。
- 理想情况下,Controller 不应用于操作 DOM。这应该由指令来完成,我们稍后会看到。
- 最佳做法是根据功能来组织 Controller。例如,如果您有一个用于输入的表单,并且需要一个 Controller,则创建一个名为“form controller”的 Controller。
47)如何构建一个基本的 AngularJS Controller?
以下代码片段是一个简单的 HTML 页面,标题为“Event Registration”,并包含对 Bootstrap、jquery 和 Angular 等重要库的引用。
- 我们正在添加 Bootstrap CSS 样式表的引用,这些样式表将与 Bootstrap 库结合使用。
- 我们正在添加 AngularJS 库的引用。因此,从现在开始,我们对 angular.js 的任何操作都将从此库引用。
- 我们正在添加 Bootstrap 库的引用,以使我们的网页对于某些控件更具响应性。
- 我们添加了 jquery 库的引用,用于 DOM 操作。Angular 需要这个,因为 Angular 中的某些功能依赖于这个库。
默认情况下,上述代码片段将在我们所有示例中显示,以便我们可以在后续部分中仅显示特定的 angularJS 代码。
其次,我们来看看我们课程开始时要使用的文件和文件结构。
- 首先,我们像任何传统 Web 应用程序一样,将文件分为两个文件夹。我们有“CSS”文件夹。它将包含我们所有的级联样式表文件,然后我们将有我们的“lib”文件夹,其中将包含我们所有的JavaScript 文件。
- bootstrap.css 文件放置在 CSS 文件夹中,用于为我们的网站添加良好的外观和感觉。
- angular.js 是我们的主文件,它已从 angularJS 网站下载并保存在我们的 lib 文件夹中。
- app.js 文件将包含我们的 Controller 代码。
- bootstrap.js 文件用于补充 bootstrap.cs 文件,为我们的 Web 应用程序添加 Bootstrap 功能。
- jquery 文件将用于为我们的网站添加 DOM 操作功能。
Angular.js 使用示例
我们希望在这里做的是,在浏览器中查看页面时,仅显示文本格式的“AngularJS”字词和一个文本框。
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <link rel="stylesheet" href="css/bootstrap.css"/> </head> <body> <h3> Guru99 Global Event</h3> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> <script src="lib/angular.js"></script> <script src="lib/bootstrap.js"></script> <script src="lib/jquery-1.11.3.min.js"></script> <div ng-app="DemoApp" ng-controller="DemoController"> Tutorial Name : <input type="text" ng-model="tutorialName"><br> This tutorial is {{tutorialName}} </div> <script> var app = angular.module('DemoApp',[]); app.controller('DemoController', function($scope){ $scope.tutorialName = "Angular JS"; }); </script> </body> </html>
48)在 AngularJS 外部文件中使用 ng-controller 的用途是什么?
在 AngularJS 中使用外部文件的 ng-controller 来执行以下步骤:
步骤 1) 在 app.js 文件中,为您要使用的 Controller 添加以下代码。
angular.module('app',[]).controller('HelloWorldCtrl',function($scope) { $scope.message = "Hello World" });
步骤 2) 现在,在您的 Sample.html 文件中,添加一个包含 ng-controller 指令的 div 类,然后添加对成员变量“message”的引用。
<!DOCTYPE html> <html ng-app="app"> <head> <meta chrset="UTF 8"> <title>Event Registration</title> <link rel="stylesheet" href="css/bootstrap.css"/> </head> <body> <h3> Guru99 Global Event</h3> <div class="container"> <div ng-controller="HelloWorldCtrl">{{message}}</div> </div> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> <script src="lib/angular.js"></script> <script src="lib/bootstrap.js"></script> <script src="lib/jquery-1.11.3.min.js"></script> <script src="app.js"></script> </body> </html>
49)编写代码以在 AngularJS Controller 中定义方法?
以下是在 AngularJS Controller 中定义方法的代码。
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> <link rel="stylesheet" href="css/bootstrap.css"/> </head> <body ng-app="DemoApp"> <h3> Guru99 Global Event</h3> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> <script src="lib/angular.js"></script> <script src="lib/bootstrap.js"></script> <script src="lib/jquery-1.11.3.min.js"></script> <div ng-app="DemoApp" ng-controller="DemoController"> Tutorial Name :<input type="text" ng-model="tutorialName"><br> <br> This tutorial is {{tutorialName}} </div> <script> var app = angular.module('DemoApp', []); app.controller('DemoController', function($scope) { $scope.tutorialName = "Angular JS"; $scope.tName = function() { return $scope.tName; }; }); </script> </body> </html>
50)编写代码使用 ng-model 在 AngularJS 中显示多行输入控件。
以下是使用 ng-model 在 AngularJS 中显示多行输入控件的代码。
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> <link rel="stylesheet" href="css/bootstrap.css"/> </head> <body > <h3> Guru99 Global Event</h3> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> <div ng-app="DemoApp" ng-controller="DemoCtrl"> <form> Topic Description:<br> <br> <textarea rows="4" cols="50" ng-model="pDescription"></textarea><br><br> </form> </div> <script> var app = angular.module('DemoApp',[]); app.controller('DemoCtrl', function($scope){ $scope.pDescription="This topic looks at how Angular JS works \nModels in Angular JS"}); </script> </body> </html>
51)编写代码演示输入元素的使用。
以下是使用 AngularJS 输入元素的代码示例。
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> <link rel="stylesheet" href="css/bootstrap.css"/> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> </head> <body > <h3> Guru99 Global Event</h3> <div ng-app="DemoApp" ng-controller="DemoCtrl"> <form> Topic Description:<br> <br> Name : <input type="text" ng-model="pname"><br> Topic : <br> <input type="checkbox" ng-model="Topic.Controller">Controller<br> <input type="checkbox" ng-model="Topic.Models">Models </form> </div> <script> var app = angular.module('DemoApp',[]); app.controller('DemoCtrl', function($scope){ $scope.pname="Guru99"; $scope.Topic = { Controller:true, Models:false }; }); </script> </body> </html>
52)如何在 PHP 中创建模型?
以下是 PHP 中创建模型的代码。
<?php class Opinion_poll_model extends CI_Model { public function __construct() { $this->load->database(); } public function total_votes() { $query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries'); return $query->row()->choices_count; } public function get_results() { $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); $table_rows = ''; for ($i = 1; $i < 5; $i++) { $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; $result = $model-> select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; } public function add_vote($choice) { $ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data); } } ?>
53)为什么要使用 PHP MVC 框架?
您应该使用 PHP MVC 框架,因为它通过以下方式简化了处理复杂技术:
- 隐藏所有复杂的实现细节。
- 提供我们可以用来构建应用程序的标准方法。
- 提高开发人员的生产力,因为像连接数据库、清理用户输入等活动的基线实现已部分实现。
- 遵守专业编码标准。
54)流行的 PHP MVC 框架有哪些?
流行的 PHP MVC 框架有:
CodeIgniter: 它是最受欢迎的 PHP MVC 框架之一。它轻量级且学习曲线短。它拥有一套丰富的库,可帮助快速构建网站和应用程序。即使是对 OOP 编程知识有限的用户也可以使用它。
Kohana: 它是层次模型视图控制器 (HMVC),是一个安全轻量级的框架。它拥有一套丰富的组件,可用于快速开发应用程序。
CakePHP: 它模仿 Ruby on Rails。它以软件设计模式、约定优于配置、ActiveRecord 等概念而闻名。
Zend: 这是一个强大的框架,具有:
- 安全、可靠、快速且可扩展。
- 支持 Web 2.0 和 Web 服务的创建。
它包含来自 Amazon、Google、Flickr、Yahoo 等供应商的 API。它非常适合开发企业应用程序。
55)如何在 PHP 中创建视图?
以下是 PHP 中创建视图的代码。
opinion_poll_form.php <html> <head> <title> JavaScript Libraries - Opinion Poll </title> </head> <body> <h3>JavaScript Libraries - Opinion Poll</h3> <p><b>What is your favorite JavaScript Library? </b></p> <form method="POST" action="index.php"> <p> <input type="radio" name="vote" value="1" /> JQuery <br /> <input type="radio" name="vote" value="2" /> MooTools <br /> <input type="radio" name="vote" value="3" /> YUI Library <br /> <input type="radio" name="vote" value="4" /> Glow </p> <p> <input type="submit" name="submitbutton" value="OK" /> </p> </form> </body> </html>
现在让我们创建结果页面 results.php。
<html> <head> <title>JavaScript Libraries - Opinion Poll Results</title> </head> <body> <h3>JavaScript Libraries - Opinion Poll Results</h3> <p><b>What is your favorite JavaScript Library?</b></p> <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p> <p><table><tr><td> <?php print($rows); ?> </tr></td></table></p> <p><a href="#">Return to voting page</a></p> </body> </html>
这些面试问题也将有助于您的口试