Asp.net mvc 使用asp.net mvc时的经验教训或错误
在启动asp.net mvc时,您会向刚开始的人强调哪些经验教训,以便他们避免这些错误?不要忘记模式中的“单元测试”部分。控制器名称:)Asp.net mvc 使用asp.net mvc时的经验教训或错误,asp.net-mvc,Asp.net Mvc,在启动asp.net mvc时,您会向刚开始的人强调哪些经验教训,以便他们避免这些错误?不要忘记模式中的“单元测试”部分。控制器名称:) 单元测试模式不要使用表单集合,使用模型绑定 尝试不使用ViewData,创建ViewModel 如果视图中有循环或If,请编写HTML帮助程序 善良 Dan尝试始终使用ViewModel在控制器和视图之间传递数据。 你可能认为你不需要,你可以把你的模型传给别人,但是突然你需要一个列表框,里面有几个选项来编辑一个模型,或者显示一条消息(不是验证消息),然后你开始
单元测试模式不要使用表单集合,使用模型绑定 尝试不使用ViewData,创建ViewModel 如果视图中有循环或If,请编写HTML帮助程序 善良
Dan尝试始终使用ViewModel在控制器和视图之间传递数据。 你可能认为你不需要,你可以把你的模型传给别人,但是突然你需要一个列表框,里面有几个选项来编辑一个模型,或者显示一条消息(不是验证消息),然后你开始向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
问题解决了。- 只要有可能,请键入视图
- 在你的观点中避免逻辑
- 远离HttpContext
- 在打印数据的任何地方使用Html.Encode(),除非您有很好的理由不这样做,这样您就不必担心XSS
- 不要将路由硬编码到视图或Java脚本中——它们在某个时候会发生变化,请改用Url.Action()
- 不要害怕使用局部视图
- MVC不是银弹,首先评估它是否是解决问题的最佳工具
- 获取Pro ASP.NET MVC框架
- 调试到
- 如果为单个参数方法创建一个参数名称与id不同的控制器方法,则必须创建一个新路由。只要咬紧牙关,使用id(它不关心类型)并在评论中解释它
- 确保使用
命名参数:重定向到操作
返回RedirectToAction(“DonateToCharity”,new{id=1000})代码>
不要让你的控制器变成胖子,做太多的工作。我在过去见过1000多个线路控制器,要知道发生了什么,这简直是一场噩梦 对控制器使用单元测试,以确保依赖关系得到控制,并且代码是可测试的 不要让jQuery和奇特的clientscript定义应用程序的行为,尽量少用它,让它增强应用程序 尽可能使用局部视图和HTML帮助程序,以确保您的视图不会变得笨拙和成为维护的噩梦 尽可能使用ViewModel
使用依赖项注入框架来处理您的依赖项(MvcContrib有几个控制器工厂,尽管它很简单,可以自己运行)。为站点的每个部分(例如,主页、帐户)使用不同的控制器 了解如何使用ViewData和TempData 了解RenderPartial的用途