大家好,这几天看MVC遇到了几个问题,相信这些应该是初学者都会碰到的,这里说一下问题吧。
1. 2010好像没有设计器了。
2. 发现什么Gridview什么的都用不了,也不是说完全不能用。有错误的时候在页顶加个form和runat,可以解决,但是如果有事件提交就解决不了,不知道怎么解决。
3. 然后就是始终没有解决的问题了,一直搞不懂View返回东西有什么用,而且就只能一个对象,不也不是不能返回多个,只是返回多个太复杂了,最要命的是view返回数据以后,可以用foreach显示处理,但是一个页面如果有数据显示和查询同时出现,foreach要用到view返回的数据,而查询里面要用到HTML....(m-,m.action),这里的m数据需要从module获取,这个时候冲突就来了,错误上说他需要什么,但是你给的是什么。就遇到这么几个问题,希望各位能解释一下,帮帮新手,谢谢!

解决方案 »

  1.   

    1、MVC其实就是HTML设计器,不需要特殊的设计器。
    2、类似于服务器控件button,gridview在mvc是没用的,只能用html控件。
    3、view不是返回网页或者由网页与内容组成的HTML。
      

  2.   

    楼上可能理解错我的意思了,我不是是说要他返回HTML,我的意思是例如HomeController返回了一个list数据给前端用foreach显示,而前端还有一个用户查询数据的表单,他需要Module里面的东西,这样一来就是Controller和Module同时传数据过来,MVC框架就傻了o
      

  3.   

    我看了好几个mvc的源代码,没有哪个项目处理这个,我就好奇了,国外查询和显示都是分开的?不像国内上面是查询,下面是显示a .
      

  4.   

    发现什么Gridview什么的都用不了,也不是说完全不能用。有错误的时候在页顶加个form和runat,可以解决,但是如果有事件提交就解决不了,不知道怎么解决。--------------------------------------------------------
    事件提交的写法就是变了、差不多、、、、
      

  5.   

    <asp:GridView ID="GridView1" runat="server" 
                AllowPaging="True" BackColor="White" Font-Size="13px" 
                BorderColor="#3366CC" BorderStyle="None" 
                BorderWidth="1px" CellPadding="4" PageSize="5" 
                OnPageIndexChanging="GridView1_PageIndexChanging" 
                AutoGenerateColumns="False">
                    <asp:BoundField DataField="UserTitle" HeaderText="标题" />
                    <asp:HyperLinkField HeaderText="修改" Text="<img src='../images/edit.gif' border='0px' title='点击修改' />" DataNavigateUrlFields="ID" DataNavigateUrlFormatString="Edit_Info.MVC?id={0}" />--------gridview如果是自己写的,就好控制了、将ID值传入到另一个页面
                </Columns>
            </asp:GridView> 
      

  6.   

    1.VS2010有设计器
    2.MVC和普通的WebForm是不一样的,所以不提倡使用服务器控件,但不是用不了。
    3.View返回的那个对象是你需要的数据。这个对象可以是任意的类型,关键看你自己的定义。如果需要多个对象可以用一个对象封装这些对象。
      

  7.   

    可以扩展HtmlHelper达到代码重用的目的,使用web控件的事件,就违背mvc的初衷了..
      

  8.   

    1.MVC有设计器,一般不要用到设计器,可以无控件开发。
    2.提交form到对应的Controller就行了,接收参数,post,get方法自己定义。
    3.如:View返回的可以是一个数组,List<Class>一个列表的类类型,你在Controller返回View的时候,就可以把这个类型的数据返回,这样在View就可以接收到数据,去foreach循环获取每个Item,显示列表数据。
      

  9.   

    这么说吧,例如
    AController.cs里面的代码
    Index() {
        return View(Sql查询出来的结果);
    }Module里面的代码
    public class ChangePasswordModel
        {
            [Required]
            [DataType(DataType.Text)]
            [DisplayName("搜索关键字")]
            public string SearchBox { get; set; }
    HTML里面有这么一段
    <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApp.Models.SearchModel>" %>
    foreach (){
      这里循环的是Sql查询出来的结果
    }HTML.FORM
    ....ForText 这里的数据来自ChangePasswordModel如果这么写,会提示冲突,主要想表达这个冲突大家都是怎么解决的?
      

  10.   

    楼主你确定你们的组织在从事MVC模式的开发吗?我怎么感觉像一团乱麻啊,逻辑关系相当混乱.1、首先,MVC是不需要UI设计器的,View事先并不知道要呈现的内容,所以无法使用设计器,
       View接口公开的方法:CreateView(参数:格式化的标准数据流)
       Controller接口公开的方法:CreateView(IView)
       UI的内容是在运行时刻View调用IController的CreateView(IView)把自己传给Controller,
       再由Controller调用IView的CreateView(CommonFormatData),
       这样就完成一次标准的View和Controlller接口的通信,而传递的信号就是标准数据格式;
    2、UI只是View的一部分,View自己有一个静态驱动器,可以吧Controller传来的标准数据格式换成UI元素;
    3、UI看楼主使用的是什么引擎了,如果使用WebForm作为MVC的引擎(这是我们的方案),任何服务器端控件都可以使用,并且随时可以开发新的控件,
       如果楼主使用的是ASP.NetMVC,那么请自己重新开发一套客户端控件,如果你还使用IDE的前端编辑器,那简直就是噩梦,数据和HTML混编在一起,View和Model都无法重用,也就是说:你编写了一个员工档案管理的页面,然后还要重新写一个极其类似的客户档案管理页面,这两个页面仅仅是字段的区别;
    4、准则:
       View只实例化IController,绝对不知道IModel,View调用IController的时候把自己作为Iview的引用传递给Icontroller;
       Model只晓得IController,也绝对不知道IView,
       Controller只实例化IModel,而操作IView是通过参数引用实现的
    5、协议:
       MVC3个层都遵从一个统一的数据格式化协议,Model可以把自己格式化成标准数据格式,View也可以把标准数据格式转化成UI元素
      

  11.   

    如楼上说的,MVC的例子里面有一个请解释一下。ChangePassword.aspx<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApp.Models.ChangePasswordModel>" %> <div class="editor-label">
                        <%: Html.LabelFor(m => m.OldPassword) %>
                    </div>
    这里面的m好像都是从Module取数据的啊。这个这么解释呢?
      

  12.   


    我曾经不止一次发表的观点:这根本就不是MVC的模式,只不过顶了个MVC的名头忽悠JAVA程序员搬家的
    数据和HTML混编在一起,View和Model都无法重用,
    不要说UI中出现了Model了,
    UI中连<div class="editor-label">都不应该出现,
    设计时刻,View怎么会知道自己要呈现什么内容呢?
    请仔细研读13楼关于View和Controller通信的讲解,已经说得很细了
      

  13.   

    谢谢,13楼说的挺好,但是目前.net上面有你说的这么完美的框架吗?目前只是我遇到了问题,希望寻求解决方案,另外公司不是做.NET的,它是我的业余爱好。如果一个页面同时出现了搜索框和显示列表,而我想验证搜索框输入的内容是否合法,请高手教一下怎么解决,谢谢!
      

  14.   

    你说功能都是非常简单的。
    先不要急着去做功能,先去学习一下,再跟着做个demo。
    下个mvc的开发文档看看。http://download.csdn.net/source/2710420
      

  15.   


    一种方法论跟框架没有什么关系,即便是有的工具集冠以MVC的名头,那跟MVC也没什么因果关系;
    组件也好,代码也好,都是设计人员编程思想的表露,
    这是能力,不经过锻炼是不可能掌握的,在面向对象理论中有个重要的组成部分,那就是"消息",消息更强调逻辑,消息要比类更难发现或者说发明,
    而MVC思想恰恰更强调消息机制
      

  16.   


    asp.net下真正实现的mvc应该是怎么样的呢,能举个例子学习一下吗