Asp.net Mvc Codeplex Preview 5 第一篇 Helper的新特性

下载:http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16775

 

Asp.net Mvc Codeplex Preview 5Asp.net Mvc的一个过渡版本,它包含了一些新特性。

Pv5对于Helper的更改基本集中在HtmlHelper。对于简单的使用,我基本一带而过,如果朋友们有什么不明白,可以留言。

AttributeEncode提供了HtmlAttributeEncode功能

使用方法
<%=Html.AttributeEncode("<script src=\"j.js\"></script><div background='javascript:alert('');'/>"%>
编码结果
&lt;script src=&quot;j.js&quot;>&lt;/script>&lt;div background='javascript:alert('');'/>

方法仅将引号 (")、“and”符号 (&) 和左尖括号 (<) 转换为等效的字符实体。该方法比Encode/HtmlEncode方法快得多。

 


Encode 提供了HTMLENCODE功能

 

使用方法
<%=Html.Encode("<script src=\"j.js\"></script><div background='javascript:alert('');'/>")%>
编码结果
&lt;script src=&quot;j.js&quot;&gt;&lt;/script&gt;&lt;div background='javascript:alert('');'/&gt;

RenderUserControl 改为 RenderPartial,并提供了更好的模板寻找方式

 

<%=Html.RenderUserControl("/Views/Shared/Menu.ascx"%>
改为
<% Html.RenderPartial("Menu");%>
注意,原来的
<%=%>改了为一句语言,有分号结束,与RenderAction统一了

验证控件

 起到了服务器端验证作用,

效果如下:

 

使用方法如下:

Model:

    public class MyModel
    {
        
public int ID { getset; }
        
public string Name { getset; }
    }

View:

     <h3>验证控件 </h3>
    
<%using (Html.Form("home""save", FormMethod.Post)) {%>
    
<%=Html.TextBox("ID")%>
    
<%=Html.ValidationMessage("ID",new {style="color:green"})%>
    
<%=Html.TextBox("Name")%>
    
<%=Html.ValidationMessage("Name")%>
    
<%=Html.SubmitButton() %>
    
<%
        }
%>
    
<div style="color: Red">
        
<%=Html.ValidationSummary() %>
    
</div>

 Controller:

public class HomeController : Controller {
        
public ActionResult Index() {//显示表单的页
            ViewData[
"Title"= "Home Page";
            ViewData[
"Message"= "Welcome to ASP.NET MVC!";
            
return View();
        }
        [AcceptVerbs(
"POST")]
        
public ActionResult Save(int? ID, string Name)
        {//处理表单的页
            
if(ID==null)
            ViewData.ModelState.AddModelError(
"ID", ID.ToString(), "ID是必添项!");
            
if (string.IsNullOrEmpty(Name))
                ViewData.ModelState.AddModelError(
"Name", Name, "Name是必添项!");
            
if (ViewData.ModelState.IsValid)//验证成功后做的操作
                
return RedirectToAction("Index");
            
return View("Index");//else
        }
        
        
public ActionResult About() {
            
return View();
        }
    }


 这就是PV5为我们提供了简单的验证功能了。

AntiForgeryToken

这是一个验证提交页的东西,类似ViewState

先在提交页的表单中写

<%=Html.AntiForgeryToken() %>

 生成一个类似

 <input name="__MVC_AntiForgeryToken" type="hidden" value="FaSCzN4P+6Hg977mdOX4z9pCKOy4vlP6whi0RGD+2L9mbTNGGx4GmN36sE4klJZf" />

 的隐藏字段。

 拿刚才的Action为例:

        [ValidateAntiForgeryToken]
        
public ActionResult Save(int? ID, string Name)
       

 DropDownList新加了默认项

要 <%=Html.DropDownList("请选择","CityID", new { @class = "select" })%>

如果不需要默认项留空字符串即可

 

标签: Helper, aspnetmvc
posted @ 2008-08-30 01:43 重典 阅读(12307) 评论(27) 编辑 收藏

 回复 引用 查看   
#1楼2008-08-30 02:43 | 曲滨*銘龘鶽      
啥时才出正式版啊!
 回复 引用   
#2楼2008-08-30 06:56 | 晕啊[未注册用户]
我才装的preview 4啊,能不能专门写篇文章讲讲如何完美卸载aspx mvc旧版本啊
 回复 引用   
#3楼2008-08-30 07:41 | 猫的宠物->鱼[未注册用户]
本来也想装preview 4 幸好没装。哈哈
 回复 引用 查看   
#4楼2008-08-30 09:00 | 武眉博<活靶子.Net>      
个人感觉HtmlEncode还是用AntiXssLibrary的好.
另外如果usercontrol有同名的,如何处理呢,还是使用全路径?

 回复 引用 查看   
#5楼[楼主]2008-08-30 10:08 | 重典      
@曲滨*銘龘鶽
这个官方也没说,希望今年能出了。。。

 回复 引用 查看   
#6楼[楼主]2008-08-30 10:09 | 重典      
@晕啊

我也是刚刚卸载,只要在控制面版的添加删除应用程序里点卸载就OK了

 回复 引用 查看   
#7楼[楼主]2008-08-30 10:18 | 重典      
@武眉博&lt;活靶子.Net&gt;
同名的话 是先搜索本路径下,再搜索shared路径下
如果有同名的比如都是menu就都放在shared下并放在不同文件夹中比如

shared/public/menu.ascx
shared/private/menu.ascx

调用时写
“public/menu”就行

 回复 引用 查看   
#8楼[楼主]2008-08-30 10:18 | 重典      
@猫的宠物-&gt;鱼
呵呵

 回复 引用 查看   
#9楼2008-08-30 11:07 | Q.Lee.lulu      
[AcceptVerbs("POST")]

这样一来REST就方便多了....

 回复 引用 查看   
#10楼[楼主]2008-08-30 11:15 | 重典      
@Q.Lee.lulu
是啊,之前还写了
PostOnlyFilter...呵呵

 回复 引用 查看   
#11楼2008-08-30 11:32 | 勇敢的兽      
preview 5 还没有source啊,装preview4问题应该不大

是邹健大哥吗??以前数据库是你,现在ASP.NET MVC又是你,我以后就跟你混了哈...收下小弟...

哈哈,这里是个好地方啊

能不能推荐一些ASP.NET MVC写的开源程序,可以只管的对照学习一下

 回复 引用 查看   
#12楼2008-08-30 11:35 | 勇敢的兽      
[OutputCache]
[HandleError]

也可以给大家说一下哈,挺有用的

 回复 引用 查看   
#13楼[楼主]2008-08-30 11:36 | 重典      
@勇敢的兽
之前在pv4的时候我已经有所讲解了,这个不是pv5新加的

 回复 引用 查看   
#14楼[楼主]2008-08-30 11:36 | 重典      
@勇敢的兽
同名而已并非数据库的邹大,呵呵

 回复 引用 查看   
#15楼2008-08-30 11:40 | 勇敢的兽      
敢情叫这个名字的都是神仙级的大大嗦...
 回复 引用 查看   
#16楼[楼主]2008-08-30 11:45 | 重典      
@勇敢的兽
夸奖了。。。

 回复 引用 查看   
#17楼2008-08-31 19:36 | Vincent Yang      
Preview版本学习成本太高了,不值得
 回复 引用 查看   
#18楼[楼主]2008-08-31 19:43 | 重典      
@Vincent Yang
也许吧,但是是不是没有DVD版的就不看电影了呢,各有所需,各有所好而已

 回复 引用 查看   
#19楼2008-09-01 13:43 | 勇敢的兽      
Validation 还是服务器端的?

客户端的Validation比较好吧,Preview5是不是没有提供?

 回复 引用 查看   
#20楼[楼主]2008-09-01 13:52 | 重典      
@勇敢的兽
是的,是服务器端的,客户端的自己用JS写就行了

 回复 引用 查看   
#21楼2008-09-15 09:25 | 李路平      
能回答我下ASP.NET 3.5 Extensions Web Application和ASP.NET MVC framework (Codeplex Preview 5)的区别吗?他们的MVC是不是同一个东西啊,我想研究下MVC先装的Extensions Web Application照着做半天出不来东西,后来想下最新版,所以安了Codeplex Preview 5,但是怎么两个MVC区别挺大的,比如[ControllerAction]这些又没有,是怎么回事?能帮我解释一下吗?
 回复 引用 查看   
#22楼[楼主]2008-09-15 11:00 | 重典      
@李路平
ASP.NET 3.5 Extensions 包括很多内容比如ASP.NET Application Services/Dynamic Languages Support in ASP.NET/Silverlight Controls for ASP.NET/ASP.NET AJAX Futures

你建的ASP.NET 3.5 Extensions Web Application应该是其中的一个项目.
它曾经集成了Asp.net Preview(算是第一版本)

Asp.net Mvc分为官方版本和Codeplex开源版本

官方版本http://www.asp.net/mvc/ 是preview 2 及 3

Codeplex版不能算官方版本,它是preview4 和 5

也就是说至今为止Asp.net MVc官方正式的是preview3

但是Codeplex版本中的大部分功能,都会最终在Beta版中采用.所以可以放心学习


 回复 引用 查看   
#23楼2008-09-16 11:27 | 李路平      
哦,那最终的Beta版要什么时候发行?如果我现在采用Codeplex Preview 5做项目开发,对后期的维护更新会不会困难?或者说现在采用Codeplex Preview 5做大项目的话是否可行?因为还是Preview 版本,不知道正式版的API和这个到底存在多大差异还不得而知。而就像ASP.NET 3.5 Extensions Web Application和ASP.NET MVC framework (Codeplex Preview 5)的API区别挺大的。能否给个建议?对于现在的Codeplex Preview 5版本拿了学习还是可以进行开发,给点意见。
 回复 引用 查看   
#24楼[楼主]2008-09-16 11:36 | 重典      
@李路平
以Haacked的说法
http://haacked.com/archive/2008/09/05/mvcfutures-and-asp.net-mvc-beta.aspx
下一版本即为Beta,至于何时发布尚不清楚

以Pv3-Pv5的升级情况来看,还是比较平和的,基本过去的代码都是可用的

现在我用它是来开发的,感觉还不错
个人有个人的想法吧

 回复 引用 查看   
#25楼2008-09-16 14:24 | 李路平      
恩,谢谢!不知道能否多写点列子啊?Codeplex Preview 5的资料很少。最好从最简单的说起!
 回复 引用   
#26楼2008-11-11 13:46 | MVC5入门[未注册用户]
楼主,你好!
我是刚入门的,可以的话提供些学习资料给我好吗?谢谢
具体介绍些方法、参数怎么用等入门东西的!

 回复 引用 查看   
#27楼[楼主]2008-11-12 09:06 | 重典      
@李路平
直接可以看beta的资料,基本上通用