Something about ASP.NET MVC Preview 2(1)
ASP.NET MVC Preview 2发布有很多天了。这段时间一直在研究并应用到实际的项目中。我对它的一句话感受是:的确很完美,的确很粗糙。完美的是产生的XHTML代码我可以完全使用XHTML1.1标准DTD了;粗糙的是还不够成熟,View里还有cs代码存在,控制页面的Title属性和服务器控件的数据绑定还得通过View的codebehind代码实现。
如果你还不是很了解它,请从Scottgu发表的 road map 里查看详细的介绍和教程。
这篇日志记几个要点,最近的记忆力越来越差了,真的老了?
1。IIS6下的Routing配置。
按照介绍,在IIS6里应该有如下语法{controller}.mvc/{action}/{id}的Route,需要把mvc扩展名映射到aspnet_isapi.dll来处理请求。但如果这样就得不到一个完美的URL。这不是我想要的啊!其实很简单,我可以把所有的请求都交给aspnet_isapi.dll来处理,虽然在性能上损耗一点点,但得到的成绩是不能估量的。方法就是把aspnet_isapi.dll添加到“通配符应用程序映射”里。即可达到完美URL的目标。
2。Best Practices about Form Design
这里的Form就是web里最基本的Form(不是传统ASP.NET里的Web Form)。上代码:
问题:Action的参数prec为什么不直接用bool类型?
答案:我们知道CheckBox有个checked属性,但在ASP.NET MVC里目前还不能获取到它,不能直接用bool类型的原因也是因为自动映射值是获取控件value属性的值而不是其他属性的值。
[OK,太晚了,未完成……]
如果你还不是很了解它,请从Scottgu发表的 road map 里查看详细的介绍和教程。
这篇日志记几个要点,最近的记忆力越来越差了,真的老了?
1。IIS6下的Routing配置。
按照介绍,在IIS6里应该有如下语法{controller}.mvc/{action}/{id}的Route,需要把mvc扩展名映射到aspnet_isapi.dll来处理请求。但如果这样就得不到一个完美的URL。这不是我想要的啊!其实很简单,我可以把所有的请求都交给aspnet_isapi.dll来处理,虽然在性能上损耗一点点,但得到的成绩是不能估量的。方法就是把aspnet_isapi.dll添加到“通配符应用程序映射”里。即可达到完美URL的目标。
2。Best Practices about Form Design
这里的Form就是web里最基本的Form(不是传统ASP.NET里的Web Form)。上代码:
1<fieldset>
2 <legend>Fill the following fields:</legend>
3 <form action="/Products/Save" method="post">
4 <p><label for="pname">Name:</label><%= Html.TextBox("pname") %></p>
5 <p><label for="pcat">Category:</label><%= Html.Select("pcat", ViewData.Categories)%></p>
6 <p><label><%= Html.CheckBox("prec", "Recommanded", false) %></label></p>
7 <p><%= Html.SubmitButton("psubmit", "Submit") %></p>
8 </form>
9</fieldset>
这是在View里面的well formed XHTML代码(注意不是HTML)。一个好的建议是每一个input都有一个label围绕,这样的一个好处是点“Name"的时候,光标会自动定位到pname这个input文本框里,当然它的好处不仅仅是这一个。要完成这个过程还需要一个Action:2 <legend>Fill the following fields:</legend>
3 <form action="/Products/Save" method="post">
4 <p><label for="pname">Name:</label><%= Html.TextBox("pname") %></p>
5 <p><label for="pcat">Category:</label><%= Html.Select("pcat", ViewData.Categories)%></p>
6 <p><label><%= Html.CheckBox("prec", "Recommanded", false) %></label></p>
7 <p><%= Html.SubmitButton("psubmit", "Submit") %></p>
8 </form>
9</fieldset>
1public void Save(string pname, int pcat, string prec){
2 Product product = new Product();
3 product.Name = pname;
4 product.CategoryId = pcat;
5 product.IsRecommanded = !(prec == null);
6
7 dataContext.Products.InsertOnSubmit(product);
8 dataContext.SubmitChanges();
9
10 RenderView("SaveOK");
11}
可能你看到了一些非常奇怪的代码。但是目前我不能不这么做。2 Product product = new Product();
3 product.Name = pname;
4 product.CategoryId = pcat;
5 product.IsRecommanded = !(prec == null);
6
7 dataContext.Products.InsertOnSubmit(product);
8 dataContext.SubmitChanges();
9
10 RenderView("SaveOK");
11}
问题:Action的参数prec为什么不直接用bool类型?
答案:我们知道CheckBox有个checked属性,但在ASP.NET MVC里目前还不能获取到它,不能直接用bool类型的原因也是因为自动映射值是获取控件value属性的值而不是其他属性的值。
[OK,太晚了,未完成……]