asp.net mvc中session的使用
public class HomeController : Controller{public ActionResult Index( ){ViewBag.Message = "欢迎使用 ASP.NET MVC!";Session[ "KeyName" ] = "Test";return View( );}public ActionResult About( ){if ( Session[ "KeyName" ] != null ){ViewBag.Message = Session[ "KeyName" ];}return View( );}}
asp.net上mvc结构的性能比起所有操作都放在页面的cs里更好吗?
性能肯定要下降了,不过是代码层次清晰了,耦合度降低了,重用性比较高而已!MVC优点:1.大型开发的时候容易维护,扩展性很好。
2.能够对HTML有完全的控制权限,对于前端来说很友好。
3.能够进行单元测试,保证功能的实现。
缺点:1.没有那么多的现成控件使用,开发效率相对较低(特别是对于菜鸟来说)2.对于大型数据的处理比较难,还是因为没有现成girdview控件。
这个控件虽然生成的html结构异常复杂,但是对于处理大量而且复杂的数据来说是很不错的。
不过一般网站是很少有这种大量且复杂的数据,很多菜鸟都是用这个大炮来打蚊子,浪费且低效率。
对于网站开发来说这个控件应该不推荐使用。
microsoft ASP.NET MVC 2是干什么的?
你之前的三层,使用的是强类型吗?如果是,那对你赶项目有很大的帮助,你只需要把把之前的表现层换一下就行了,把之前的表现层中使用的强类型通过控制器以Model的形式返给View就可以了。
如果不是,你需要创建用于View的Model,然后用ado.net中的方法把数据手动填充到Model里,然后由Controller返回就可以了。
asp.net mvc htmlhelper 扩展方法 使用
引用 System.Web.Mvc;并把类的命名空间跟 System.Web.Mvc放在一起namespace System.Web.Mvc{public static class HtmlExp{public static string SpanTagSet (this HtmlHelper helper,string id,string value,string key,string style){TagBuilder tb=new TagBuilder(key);tb.MergeAttribute("style",style);tb.MergeAttribute("name",id);tb.GenerateId(id);tb.SetInnerText(value);return tb.ToString();}}}
如何使用ASP.NET MVC引擎开发插件系统
你无需将条件从post的action传到get的action,虽然可以,但这不是被建议的用法。
一个更好的做法是用“过虑属性”(filter attribute),可能你的post的action的形式如下:[HttpPost]//或许你并没有这样用,或许你就是这样用的。
。
public ViewResult MyAction(int page){//...}那么,你应该知道(或是可以)这么做:[HttpGet]public ViewResult MyAction(int page){//...}MyAction的形式参数page会通过ASP.NET MVC的“值提供程序(value provider)”提供,它会按优先级从下以列表中为page绑定一个值:Request.FormRouteData.ValuesRequest.QueryStringRequest.Files这也就意味着,你的条件完全可以以一个的html域接收用户的输入,当你提交表单时,name等于page(name="page")的表单里的域(就是html input)的值将作为MyAction的形参的值,且表单域的值是首先的。
针对补充问题:明白你的意思了,你是想通过Get请求而又不把条件暴露在URL中对吧,如果是的话,那么有一个好的办法是直接用《Pro ASP.NET MVC2 Framework(second edition)》第四章还是第五章里的分页例子的思路。
大概的思路是这样的,让每页对应一个URL,这样的好处之一是当客户看上了某一页(假设是第三页)的内容,此时他右击页面选择“加入收藏夹”,而当他几天后从收藏夹打开收藏的链接时,他得到的还将是第三页的数据。
这在Web Form中通过简单的办法是很难做到的。
话远了,为了实现这个办法,需要为此维护一个拥有CurrentPageIndex属性的View Model,并在配置Route的时候加个CurrentPageIndex项。
。
寝室要断电了,如果你不想下那本电子书的话(当然,我推荐你下),明天继续。
。
希望这会是最终版本的补充:以下是Steven Sanderson的《Pro ASP.NET MVC2 Framework(second edition)》上的例子,以及一些我的说明(以下说明都基于你对C#一些或新或旧语法的了解):整体的思想是把“分页”做成一个组件,利于复用。
具体的是,首先给HtmlHelper扩展一个方法(有关扩展方法可参数相关文档,如MSDN),这个方法返回的是一个能被语法解析的MvcHtmlString对象,事实上这个对象包含的内容则是HTML标签。
扩展方法如下:public static class PagingHelpers { public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pageInformation, Func pageUrl) { StringBuilder result = new StringBuilder(); for (int i = 1; i Url.Action("List", new { category = Model.CurrentCategory, page = i }))%>可以看到,调用扩展的分页方法时我们传入了两个实参,一个是Model.PagingInfo,一个是lambda表达式(有关lambda表达式可参考相关文档,如MSDN)i => Url.Action("List", new { category = Model.CurrentCategory, page = i })。
在看第一个参数Model.PagingInfo之前,我们先看看Model的类型定义:public class ProductsListViewModel { public IList Products { get; set; } public PagingInfo PagingInfo { get; set; } public string CurrentCategory { get; set; } }此类型有三个属性,在此我们仅需关心其第二个属性,PagingInfo类型的PagingInfo(名字取成一样,希望不要混淆)属性。
PagingInfo类型定义如下:public class PagingInfo { public int CurrentPage { get; set; }//当前页码 public int TotalItems { get; set; }//数据总记录数 public int ItemsPerPage { get; set; }//每页记录数 public int TotalPages//总页数 { get { return (int)(Math.Ceiling((decimal)TotalItems / ItemsPerPage)); } } }这就是我们分页时所关心的信息,也正是我们调用扩展的分页方法时需要传递过去的信息。
当然,这些信息不会凭空而生,而需要我们自己设置。
我所举的例子是Steven Sanderson的《Pro ASP.NET MVC2 Framework(second edition)》所提供的一个以视图List来分页产品的例子。
应当注意,用户从浏览器请求/list时,他请求的不是list.aspx那个页面(虽然我们为用户显示的就是它),他请求的是我们一个叫List的Action。
这也就意味着,为输出用户需要的那个List.aspx我们需要做的准备工作(当然,不是业务逻辑)都将在名叫List的Action里进行,Action List定义如下:public ViewResult List(string category, int page = 1/*C#的形参默认值(参考C# 4'soptional parameter)*/) { var productsToShow = (...
ASP.NET MVC中能否嵌套WEB控件页面使用?
建议不要这样做,我一直在用asp.net的MVC,很久没有用过服务器控件了,建议用table写,很简单的,其实<%foreach(var item in (Article)ViewData["Article"]){%><%=item.content%><%}%>上面是我们读取文章时常写的东西。
其中Article是一个Model,映射数据库中的一个表。
C# asp.net mvc IsAjaxRequest怎么在父类中使用
//导入命名空间using System.Web;using System.Web.Mvc;//获取当前的请求,可以在普通类中获取,不一定在控制器中才能获取,需要引用System.Web命名空间HttpRequest request = HttpContext.Current.Request;//把HttpRequest对象转换为HttpRequestBase对象,控制器中的Request是HttpRequestBase//只有HttpRequestBase才有IsAjaxRequest()方法HttpRequestBase requestBase = new HttpRequestWrapper(request);//使用HttpRequestBase对象调用扩展方法IsAjaxRequest(),需要引用System.Web.Mvc才能调用IsAjaxRequest()bool isAjax = requestBase.IsAjaxRequest();
转载请注明出处51数据库 » asp.net mvc 操作word