这段时间非常忙,所以上一篇没有及时回复留言,请大家谅解。
由于时间比较长了,先简单回顾一下
集锦(2) 中的内容。其中主要讨论了3个问题:view与Mvc view user control中使用强类型,UpdateModel与TryUpdateModel的使用方法及排错处理,还有就是在Action中使用FormCollection来访问请求页面标签元素的值。
view与Mvc view user control使用强类型不仅会使页面看起来很舒服而且更具有可读性。下面的例子供大家比较一下
使用了强类型不需要在页面中进行转换,Model就是一个Account对象
System.Web.Mvc.ViewPage<Account>
<% if (Model != null) { %>
<div><%= Model.Name %></div>
<div><%= Model.Age %></div>
<% } %
没有使用强类型,这里使用了ViewData存储对象account
System.Web.Mvc.ViewPage
<% if (ViewData["account"]) != null { %>
<% var account = ViewData["account"] as Account ;%>
<div><%= account.Name %></div>
<div><%= account.Age %></div>
<%}%>
UpdateModel与TryUpdateModel有一些重载方法可以帮助我们准确的将数据装入对象,其他的就没什么了。
下面就把今天的几个实用技巧介绍给大家,按照上一篇的顺序往下进行
8. 使用SelectList填充DropDownList
view:
<%= Html.DropDownList("AccountType") %>
controller:
List<AccountType> accountType = GetAll();
ViewData["AccountType"] = new SelectList(accountType, "ID", "Name");
可以再后面加上默认选中的参数:
ViewData["AccountType"] = new SelectList(accountType, "ID", "Name",selectedValue);
9. 使用Html.RenderPartial调用mvc usercontrol
<% Html.RenderPartial(ViewData["PartialViewName"] as string, Model); %>在开发中将页面分成几个usercontrol,不仅使页面逻辑更加清晰而且被定义的usercontrol可以被重用。
10. ajax请求controller返回集合
在
集锦1介绍了一个ajax请求controller删除记录并返回成功与否信息的实例,而这次需要返回一个数据的集合,由于asp.net mvc集成了jquery框架,所以使用getJson方法实现
controller:
public ActionResult GetAllAccount()
{
List<Account> list = this.GetAllAccount();
return Json(list);
}
view:
$.getJSON('<%= Url.Action("GetAllAccount", "Account") %>',
function(json) {
var $container = $("#container");
$.each(json, function() {
$container.append('<div><a href='detail?id=' + this.Id>this.Name</a></div>');
});
});
controller中的代码行 return Json(list) 将所有的信息传输到客户端,最好不要这样做,创建一个 JsonAccount 类型,其中有两个属性分别是ID,Name,只将这两个信息返回到客户端即可,当然也可以使用 KeyValuePair,这样就不用额外的定义JsonAccount 类型,使用起来更方便!
return Json(list.ConvertAll(a => new KeyValuePair<Guid, string>(a.ID, a.UserName)));
在客户端脚本也要相应的变化
$container.append('<div><a href='detail?id=' + this.Key>this.Value</a></div>');
mvc实用集锦就写到这了,希望对大家开发asp.net mvc程序能够有所帮助。谢谢大家的支持!!!!!
转载于:https://www.cnblogs.com/upcontrol/archive/2009/09/13/1565663.html