使用asp.net mvc时获得的经验教训或错误

时间:2009-09-07 17:50:58

标签: asp.net-mvc

您在启动asp.net mvc时学到的最重要的经验教训是什么?您可以向开始使用的人突出显示,以便他们可以避免这些错误?

11 个答案:

答案 0 :(得分:8)

  • 在打印数据的任何地方使用Html.Encode(),除非你有充分的理由不这样做,所以你不必担心XSS
  • 不要将路径硬编码到您的视图或javascripts中 - 它们会在某些时候发生变化,而是使用Url.Action()而不是
  • 不要害怕使用部分观点
  • MVC不是银弹,首先评估它是否确实是解决问题的最佳工具。

答案 1 :(得分:4)

不要忘记模式的“单元测试”部分。

答案 2 :(得分:3)

尝试始终使用ViewModel在Controller和View之间传递数据。 你可能认为你不需要一个,你只需要传递你的模型,但突然你需要一个列表框,其中包含几个用于编辑模型或显示消息(不是验证消息)的选项,并且你开始向ViewData添加项目,用魔术字符串作为键,使应用程序更难维护。 您还可以使用ViewModel解决一些安全问题。 例如:

class user:
int id
string name
string email
string username
string password

您的观点允许用户更改其姓名和电子邮件并发布到操作

public ActionResult Edit(User user)
{
--persist data
}

有人可能会篡改您的表单并发布新密码和用户名,您需要非常小心DefaultBinder行为。 现在,如果您使用ViewModel,如:

class userEditViewModel:
int id
string name
string email

问题已经消失。

答案 3 :(得分:1)

  • 只要有可能输入您的视图

  • 在视图中避免使用逻辑

  • 远离HttpContext

答案 4 :(得分:1)

  1. 获取Steve Sandersons Pro ASP.NET MVC框架

  2. 调试Sourcecode

答案 5 :(得分:1)

  • 如果为单个参数方法创建一个具有 id 的不同参数名称的Controller方法,则必须创建新路径。只需咬紧牙关并使用 id (它不关心类型)并在评论中解释它。
  • 确保使用RedirectToAction命名参数:

    return RedirectToAction("DonateToCharity", new { id = 1000 });

  • You lose your ViewData when you RedirectToAction

答案 6 :(得分:1)

将javascript放在单独的文件中,而不是放入视图页面

答案 7 :(得分:0)

控制器的名称:)

单元测试模式

答案 8 :(得分:0)

不要使用Forms集合,请使用模型绑定。

尽量不要使用ViewData,创建一个ViewModel。

如果在View中有循环或if,请编写HTML帮助程序。

善,

答案 9 :(得分:0)

不要让你的控制器变胖,做太多工作。我过去看过1000多台线路控制器,它只是一个绝对的噩梦,可以理解发生了什么。

利用控制器的单元测试来确保依赖性得到控制,并且您的代码是可测试的。

不要让jQuery和花哨的客户脚本定义应用程序的行为,尽可能少地使用它,让它改进你的应用程序。

尽可能使用部分视图和HTML帮助程序,以确保您的视图不会变得笨拙和维护噩梦。

尽可能使用ViewModel。

使用依赖注入框架来处理你的依赖关系(MvcContrib有几个控制器工厂,虽然它很简单,可以自己滚动)。

答案 10 :(得分:0)

为网站的每个部分使用不同的控制器(例如,主页,帐户)

了解如何使用ViewData和TempData

了解RenderPartial的用途