MVC架构模式的常见问题及其解决方案:

  1. JQuery提交数据时中文乱码:在$.post时进行数据编码,使用escape方法,并在后台使用Server.UrlDecode方法进行解码。
  2. MVC中设置文本框宽度无效:使用@Html.TextBoxFor(model => model.Name, new { @style = "width:300px" })而不是width="300px"
  3. Html.RadioButtonFor的使用@Html.RadioButtonFor(model=>model.IsStudent,true)@Html.RadioButtonFor(model => model.IsStudent, false)用于生成单选按钮。
  4. @helper自定义方法的使用:定义@helper GetStatusName(int status) { ... }并在视图中直接使用@GetStatusName(2)
  5. Model多级引用时对应的HTML:使用@Html.TextBoxFor(model => model.Topic.Title)生成的HTML代码中,名称为name="Topic.Title"
  6. MVC路由选择:定义URL规则,映射URL到控制器,如routes.MapRoute("View", "http://localhost/View/ViewCustomer/", new { controller = "Customer", action = "DisplayCustomer" });
  7. 路由映射表的位置:在global.asax文件中编写路由映射表。
  8. 映射多个URL到同一个动作:通过添加多条不同Key名字的记录,指定同样的控制器和动作。
  9. 使用ActionLink生成链接<%= Html.ActionLink("Home","Gotohome") %>生成链接到"Home"控制器的"GotoHome"动作。
  10. 限制动作的类型为GET或POST:使用[HttpGet][HttpPost]属性限制HTTP的类型。
  11. 在MVC中保持Sessions:通过tempdata, viewdata, 和viewbag三种方式保持。
  12. tempdata, viewdata, 和viewbag之间的区别:tempdata用于跨控制器传递数据,viewdata用于控制器到视图的数据传递,viewbag是viewdata的动态版本。
  13. Spring MVC异常处理:可以将异常抛给Spring框架,由Spring框架来处理;配置简单的异常处理器,在异常处理器中添加视图页面。
  14. 拦截get方式提交的方法配置:在@RequestMapping注解里面加上method=RequestMethod.GET
  15. 在方法里面得到Request或Session:直接在方法的形参中声明request, Spring MVC就自动把request对象传入。
  16. 在拦截的方法里面得到从前台传入的参数:直接在形参里面声明这个参数就可以,但必须名字和传过来的参数一样。
  17. 前台传入多个参数且属于一个对象时的处理:直接在方法中声明这个对象, Spring MVC就自动会把属性赋值到这个对象里面。
  18. Spring MVC中函数的返回值:返回值可以有很多类型,有String, ModelAndView。ModelAndView类把视图和数据都合并的一起的,但一般用String比较好。
  19. Spring MVC用什么对象从后台向前台传递数据:通过ModelMap对象,可以在这个对象里面调用put方法,把对象加到里面,前台就可以通过el表达式拿到。
  20. 怎么样把ModelMap里面的数据放入Session里面:可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key。
  21. Spring MVC里面拦截器的写法:实现HandlerInterceptor接口或继承适配器类,在接口方法当中实现处理逻辑;然后在Spring MVC的配置文件中配置拦截器。
  22. MVC中数据冗余问题:在模型、视图和控制器之间传递数据可能导致数据冗余,增加应用程序的复杂性,还可能导致数据不一致的问题。
  23. MVC中性能问题:由于MVC框架中的组件之间存在紧密的耦合关系,因此很难对其进行优化,可能导致性能问题。
  24. MVC中测试困难:由于MVC框架中的组件之间存在紧密的耦合关系,因此很难对其进行单元测试。
  25. MVC中灵活性有限:MVC框架通常适用于具有明确分层结构的应用程序,但对于某些类型的应用程序,如事件驱动或实时应用程序,MVC可能不是最佳选择。
  26. MVC学习曲线:对于新开发人员来说,学习和掌握MVC框架可能需要一定的时间和努力。
  27. MVP与MVC的比较:MVP通过引入Presenter来降低视图和模型之间的耦合,使得View不能直接访问Model,而是通过Presenter发出请求。
  28. MVVM与MVC的比较:MVVM引入了数据绑定的概念,这使得View和ViewModel之间的关系更加紧密,减少了手动同步数据的需求。
  29. MVC中数据更新和视图重定向的问题:在MVC中,控制器负责响应用户的操作,并在模型中做出响应后选择要渲染的视图来显示用户界面。
  30. MVC模型的缺点:模型图案有点复杂,视图中数据访问效率低下,对于现代用户界面来说,使用MVC非常困难,需要多名程序员进行并行开发,需要多种技术知识。
  31. MVC中ActionFilters的作用:在MVC中,“ActionFilters”帮助您在MVC动作执行或正在执行时执行逻辑。
  32. MVC项目执行的步骤:包括接收应用程序的第一个请求、执行路由、创建MVC请求处理程序、创建控制器、执行控制器、调用动作、执行结果。
  33. 路由和三段的定义:路由可帮助您确定URL结构并将URL映射到控制器,对于路由而言重要的三个段是控制器名称、动作方法名称、产品型号。
  34. 在MVC模式中如何进行路由:有一组称为RouteCollection的路由,它由应用程序中注册的路由组成。RegisterRoutes方法记录此集合中的路由。
  35. 使用超链接从一个视图导航到另一个视图:通过使用“ActionLink”方法,如<%= Html.ActionLink("Home", "Gotohome") %>
  36. MVC中如何维护会话:在MVC中会话可以通过三种方式维护:tempdata、viewdata和viewbag。
  37. Temp数据、View数据和View Bag之间的区别:tempdata用于跨控制器传递数据,viewdata用于控制器到视图的数据传递,viewbag是viewdata的动态包装器。
  38. MVC中部分视图的概念:MVC中的分部视图渲染部分视图内容,有助于减少代码重复。
  39. 在MVC中实现Ajax:在MVC中,Ajax可以通过Ajax库或jQuery实现。
  40. ActionResult和ViewResult的区别:“ActionResult”是一个抽象类,而“ViewResult”派生自“AbstractResult”类。
  41. 如何在MVC中以JSON格式返回结果:为了在MVC中以JSON格式发送回结果,可以使用“JSONRESULT”类。
  42. View和Partial View的区别:Partial View用于渲染部分视图内容,有助于减少代码重复。
  43. 多个过滤器的执行顺序:过滤顺序为授权过滤器、动作过滤器、响应过滤器、异常过滤器。
  44. 最终执行的ASP.NET过滤器:最后执行的是“异常过滤器”。
  45. Razor Views的文件扩展名:对于Razor视图,文件扩展名是.cshtml(C#)和.vbhtml(VB)。
  46. 给路线添加约束的两种方法:使用正则表达式或实现IRouteConstraint接口的对象。
  47. 不需要实现或不需要路由的两种情况:当找到与URL模式匹配的物理文件时,或为URL模式禁用路由时。
  48. MVC的特点:简单且无摩擦的可测试性,提供对HTML和URL的完全控制,利用ASP.NET、JSP、Django等提供的现有功能,清晰的逻辑分离,针对SEO友好URL的URL路由,支持测试驱动开发(TDD)。

标签: none

FoxSSL.COM,单域名SSL证书—35元/年,通配符证书—255元/年点击 购买

评论已关闭