首页 新闻 会员 周边

请教些 ASP.net MVC 经验方面的东西

0
悬赏园豆:40 [已解决问题] 解决于 2014-08-30 23:05

交代背景:

  自学的MVC3(虽然知道现在4都有了,不过比较好的教材是3所以就学了3)

  问题1:曾经在网上看到说使用MVC的等级分为三个等级

    <1>:使用MVC默认的行(忘了那个词了,“行为”是我自己瞎写的,领会精神吧)

    <2>:扩展MVC的行为

    <3>:使用自定义替换

    那我想知道,大家在实际项目中,如何应用,是不是绝大多数都是使用默认行为呢?

  问题2:关于模板辅助器方法(比如 EditorForModel, EditorFor)这些生成的HTML元素貌似不太好定制(就是根据自己的需要随意设置HTML标签属性,至少使用这些辅助器方法生成元素的class 这个属性......)所以问问,是不是不太常用呢? 还有就是EditorForModel个人感觉它有些死板,是否因为这个原因,有人跟我一样不喜欢它呢?

 

  问题3:(跑个题这个是ORM的问题)

  目前唯一接触到的ORM就是EF

  还没有怎么学习它,要看的东西太多,它先放放吧,所以想直接问问

  EF(Code First)

  public class EFDbContext:DbContext
  {
  public DbSet<Product> Prodcuts { get; set; }
  }

  在通过Prodcuts 属性取得数据的时候,是不是一次把Prodcuts 表中的数据从数据库中都  读出来?在Controller中使用Linq过滤出想要的数据,那么这样是不是就从数据库中读取   了大量“无用”的数据呢?如果是这样,那么有没有办法杜绝?

 

  问题4:

  关于MVC的非唐突Ajax(Ajax.BeginForm)

  我很想知道大家对它的评价,貌似WebForm中的一些Ajax控件不受欢迎,所以很想知道

  MVC中的Ajax大家喜欢用么?还是自己通过JS/JQuery 来自己写呢?(各种看,头大,如  果这个用的一般的话,有点想偷懒不看了)

  

菜鸟 来取经了,如果问的问题让您见笑请 随意放生大小,笑完了别忘给个完美答案谢谢

算了的主页 算了 | 初学一级 | 园豆:3
提问于:2014-08-29 15:25
< >
分享
最佳答案
0

首先,学3和学4甚至到最新版的6都没有太大的差距;

1、对于三个等级,大致可以这样分,一般在做项目的话,大部分使用mvc的默认功能+部分自定义扩展来实现一些定制化需求;

2、EditorForModel,确实不容易定制,所以大部分是使用其他的表单元素扩展,而不是直接生成整个的编辑页面;

3、对于三,看你使用怎样的返回类型,默认是不会查询所有的数据的,会自动生成符合你查询需求的sql语句(复杂查询,可能生成的sql语句不够优化)

4、非入侵式JS,Ajax在mvc中是非常重要的,因为不再有ViewState,所以必须很多的js控制。

 

如下书籍可以看看:《MVC3/4高级编程》《精通MVC3/4》《MVC4/5框架揭秘》

收获园豆:15
幻天芒 | 高人七级 |园豆:37175 | 2014-08-29 17:27
其他回答(4)
0

我先来回答问题三吧。

LINQ TO SQL 及Entity Framework 如下的语句

var query = from c in dbContext.Product;

response.write query.count;

 

var query1= (from c  in query

                   where c.artno.beginwith("a001")).tolist();

这样三句话,第一句其实你在数据库里面是看不到查询语句的执行的。

然后你会看到第二句的执行,类似select count(*) from product这样。

然后你会再看到第三句语句的执行。

 

机制就是ORM并不是马上执行语句,而是等待需要数据的时候,才去执行的。

比如tolist或是UI绑定,比如绑定到Gridview或是使用了for each item 之类的取数据语句。

我说的可能并不是很清楚,但差不多就是这样的,你可以再去看相关文章了解这方面的知识。

收获园豆:10
爱编程的大叔 | 园豆:30839 (高人七级) | 2014-08-29 15:37
0

1、这个问题好大,默认指的的是MVC里已经实现了的路由策略、数据控制等,扩展指的是根据自己的一些特殊需求进行扩展,不更改MVC的关键功能,自定义是高手的领域,能完全的揉捏MVC了。

2、这个的定制就在SHARED的EDITORTEMPLATE里放一个模型类型同名的cshtml视图来达到目的。当然,也不一定要同名,因为EDitor支持指定模板名称。这个一般来说用的不多,也算高手范畴吧。

3、使用products是不会返回所有数据的,除非你直接对它进行查询。这个属性只是给你一个查询入口,具体多少数据由你基于这个属性(集合)的linq语句决定。要理解这个,需要你多理解linq的知识。

4、WebForm时很少用,现在也很少用,Html有BeginForm,要用到ajax的时候,也是走jquery的多。

收获园豆:10
519740105 | 园豆:5810 (大侠五级) | 2014-08-29 15:37
0

现在不是4都有了.是6都有了.

页面还是尽量都用前端的来实现,后台代码能少就少.尽量前后端分离.

吴瑞祥 | 园豆:29449 (高人七级) | 2014-08-29 15:40
0

这两个月刚做完一个MVC4的项目,摸着石头过河,提供一点体会。

1、我理解的是你在说Action,如果是指这个的话,假设post提交,我把Action当做是一个中间件的作用,前台提交数据,这里获取并做有效性验证,然后封装下,直接给下一层做业务逻辑处理;重写的话,我在权限控制时候用到了,好像是重写了一个BeforeAction的方法,用户做权限判断,因为一个Action对应一个页面,这样就可以处理全部页面了。

2、模板辅助器,看需要,如果默认的不满足需求,就扩展HtmlHelper

3、EF对数据的读取,是什么时候用,什么时候取,而且由于使用的是Linq,所以在编译后,EF会进行优化处理,网上也有EF处理百万级数据的文章,应该是不会有太大影响。

4、自带的Ajax,还是挺好用的,我都是在 直接处理一个实体对象的表单提交时采用,定义好name属性,Action可以直接用实体来接收,很方便,”貌似WebForm中的一些Ajax控件不受欢迎“,如果你是指webForm的UpdatePanel系列的东西,那么可以告诉你完全不是一个东西。其他的情况,如果Ajax.BeginForm会导致还需要自定义一些其他参数,我会选择 JQuery的Ajax提交,目的是结构单一。

 

看到一个朋友推荐《MVC4/5框架揭秘》,这个如果要作为 开发过程中的参考,不太合适,这个本书介绍的是MVC框架的实现,内容偏深,个人意见仅供参考。

收获园豆:5
铁手三郎 | 园豆:311 (菜鸟二级) | 2014-08-29 22:35

正如你所说,这两本是比较深入的。所以有《MVC3/4高级编程》《精通MVC3/4》《MVC4/5框架揭秘》,这样的一个顺序。这三个系列刚好能够从浅入深的学习mvc。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2014-08-30 23:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册