• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NETMVC入门--7、Hellper与数据的提交与绑定

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本系列文章基于ASP.NET MVC Preview5.

ASP.NET MVC提供了很多Hellper的方法,Hellper就是一些生成HTML代码的方法,方便我们书写HTML代码(有一部分的朋友更喜欢直接写HTML代码)。我们也可以利用.NET 3.5的扩展方法来书写我们自己的Hellper。

例如:

<%=Html.ActionLink("首页","index","Home")%>

生成的HTML代码就是:<a href="/Home/Index">首页</a>。这里有一点需要注意的就是,Html.ActionLink()和Url.Link()方法生成的URL和你在Global.asax里面配置的Route的先后顺序是有关的

具体的关于Hellper的各个方法的使用我就不详细介绍了,你可以参考重典Asp.net Mvc Framework 系列文章。

我们来实现前面提到的Setting,用于设置Blog的基本设置。我们看一下在Views/Admin/Setting.aspx页面的代码:

<p>
    
<label for="Name">Blog的名称</label>
    
<%=Html.TextBox("Name")%>
    
<%=Html.ValidationMessage("Name")%>
</p>
<p>
    
<label for="Description">Blog的简单描述</label>
    
<%=Html.TextArea("Description")%>
    
<%=Html.ValidationMessage("Description")%>
</p>
<p>
    
<label for="PostsPerPage">每页显示的日志数</label>
    
<%=Html.TextBox("PostsPerPage")%>
    
<%=Html.ValidationMessage("PostsPerPage")%>
</p> 

 

我们的Setting Action方法是这样写的:

注意我们是return View(BlogSettings.Instance);给ViewData.Model传递了BlogSettings.Instance。然后运行一下看看:

注意到上面的TextBox都有值了么?我们使用了Html.TextBox("Name")而已,并没有指定值啊?那么这个值是怎么自动的绑定上去的呢?注意到前面在Action中我们是return View(BlogSettings.Instance);给ViewData.Model传递了BlogSettings.Instance,BlogSettings.Instance.Name和Html.TextBox("Name")的参数"Name"同名,Html.TextBox()方法在调用的时候会调用ViewData.Eval()方法,所以就自动把值绑定上去了。和前一篇文章说过的ViewData.Eval()可以使用"."表达式一样,Html.TextBox()也同样可以使用"."表达式,例如:Html.TextBox("Post.Title")也可以自动绑定ViewData.Model.Post.Title值上去。

下面我们来将值提交到Action中并保存。我们的Form使用了Post回服务器:

<form id="fields" action="<%=Url.Action("Setting","Admin")%>" method="post">

 

然后我们在Action中进行处理:

[ActionName("Setting"), AcceptVerbs("POST")]
public
 ActionResult SaveSetting()
{
    
//
当然你可以这样取值
    
//
string name = Request.Form["Name"]; 

    
//但我们有更简便的:

    try
    {
        UpdateModel(BlogSettings.Instance, 
new[] { "Name""Description""PostsPerPage" });
    }
    
catch

    {
        
return View(BlogSettings.Instance);
    } 

    
//在这里你可能还需要对自定义的业务逻辑进行验证 


    BlogSettings.Instance.Save();
    
return ShowMsg(new List<string>() { "修改设置成功" });

如上代码所示,我们可以使用UpdateModel()方法直接对Post到服务器来的Form表单的值赋给指定的对象。对于提交的数据进行业务逻辑的验证这里要讨论的还是比较多的,国外也有不少文章讨论这个的,大家可以搜索看看。

暂时就写这么多吧,想到什么再补充。

本文的Blog程序示例代码:4mvcBlog_7.rar

 

power by [lulu] 原文地址


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
技巧百问(2):在asp.net网页中如何使用弹出窗体?发布时间:2022-07-10
下一篇:
Asp.netmvc3实现进度条上传思路[转]发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap