MVC遇到的问题

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

就遇到这么几个问题,希望各位能解释一下,帮帮新手,谢谢!
...全文
275 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
总哈哈 2010-09-25
  • 打赏
  • 举报
回复
谢谢柯南的例子,很好,我看了以后就知道怎么做了。。
mofeiwuwei6376 2010-09-24
  • 打赏
  • 举报
回复
观 摩
缪军 2010-09-22
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 askzhigang 的回复:]
谢谢,13楼说的挺好,但是目前.net上面有你说的这么完美的框架吗?目前只是我遇到了问题,希望寻求解决方案,另外公司不是做.NET的,它是我的业余爱好。如果一个页面同时出现了搜索框和显示列表,而我想验证搜索框输入的内容是否合法,请高手教一下怎么解决,谢谢!
[/Quote]

一种方法论跟框架没有什么关系,即便是有的工具集冠以MVC的名头,那跟MVC也没什么因果关系;
组件也好,代码也好,都是设计人员编程思想的表露,
这是能力,不经过锻炼是不可能掌握的,

在面向对象理论中有个重要的组成部分,那就是"消息",消息更强调逻辑,消息要比类更难发现或者说发明,
而MVC思想恰恰更强调消息机制
缪军 2010-09-22
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 karascanvas 的回复:]
引用 19 楼 microtry 的回复:

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


一种方法论跟框架没有什么关系,即……
[/Quote]

13楼已经说了
种草德鲁伊 2010-09-22
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 microtry 的回复:]

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


一种方法论跟框架没有什么关系,即便是有的工具集冠以MVC的名头,那跟MVC也没什……
[/Quote]

asp.net下真正实现的mvc应该是怎么样的呢,能举个例子学习一下吗
总哈哈 2010-09-21
  • 打赏
  • 举报
回复
谢谢,13楼说的挺好,但是目前.net上面有你说的这么完美的框架吗?目前只是我遇到了问题,希望寻求解决方案,另外公司不是做.NET的,它是我的业余爱好。如果一个页面同时出现了搜索框和显示列表,而我想验证搜索框输入的内容是否合法,请高手教一下怎么解决,谢谢!
缪军 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 askzhigang 的回复:]
如楼上说的,MVC的例子里面有一个请解释一下。

ChangePassword.aspx

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApp.Models.ChangePasswordModel>" %>

<div c……
[/Quote]

我曾经不止一次发表的观点:这根本就不是MVC的模式,只不过顶了个MVC的名头忽悠JAVA程序员搬家的
数据和HTML混编在一起,View和Model都无法重用,
不要说UI中出现了Model了,
UI中连<div class="editor-label">都不应该出现,
设计时刻,View怎么会知道自己要呈现什么内容呢?
请仔细研读13楼关于View和Controller通信的讲解,已经说得很细了
claymore1114 2010-09-21
  • 打赏
  • 举报
回复
你说功能都是非常简单的。
先不要急着去做功能,先去学习一下,再跟着做个demo。
下个mvc的开发文档看看。http://download.csdn.net/source/2710420
总哈哈 2010-09-20
  • 打赏
  • 举报
回复
坐等高手解答。
总哈哈 2010-09-20
  • 打赏
  • 举报
回复
如楼上说的,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取数据的啊。这个这么解释呢?
缪军 2010-09-19
  • 打赏
  • 举报
回复
楼主你确定你们的组织在从事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元素
总哈哈 2010-09-19
  • 打赏
  • 举报
回复
也就是说不能返回值
总哈哈 2010-09-19
  • 打赏
  • 举报
回复
这么说吧,例如
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

如果这么写,会提示冲突,主要想表达这个冲突大家都是怎么解决的?
阿青 2010-09-19
  • 打赏
  • 举报
回复
1.MVC有设计器,一般不要用到设计器,可以无控件开发。
2.提交form到对应的Controller就行了,接收参数,post,get方法自己定义。
3.如:View返回的可以是一个数组,List<Class>一个列表的类类型,你在Controller返回View的时候,就可以把这个类型的数据返回,这样在View就可以接收到数据,去foreach循环获取每个Item,显示列表数据。
种草德鲁伊 2010-09-19
  • 打赏
  • 举报
回复
可以扩展HtmlHelper达到代码重用的目的,使用web控件的事件,就违背mvc的初衷了..
sjt000 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dick1026 的回复:]
1.VS2010有设计器
2.MVC和普通的WebForm是不一样的,所以不提倡使用服务器控件,但不是用不了。
3.View返回的那个对象是你需要的数据。这个对象可以是任意的类型,关键看你自己的定义。如果需要多个对象可以用一个对象封装这些对象。
[/Quote]
你可以返回多个对象,查询对象和展示对象,也可以把所有需要的东西再封装成进一个对象内
AsheBin 2010-09-19
  • 打赏
  • 举报
回复
1.VS2010有设计器
2.MVC和普通的WebForm是不一样的,所以不提倡使用服务器控件,但不是用不了。
3.View返回的那个对象是你需要的数据。这个对象可以是任意的类型,关键看你自己的定义。如果需要多个对象可以用一个对象封装这些对象。
zyd_computer 2010-09-19
  • 打赏
  • 举报
回复
<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>
zyd_computer 2010-09-19
  • 打赏
  • 举报
回复
发现什么Gridview什么的都用不了,也不是说完全不能用。有错误的时候在页顶加个form和runat,可以解决,但是如果有事件提交就解决不了,不知道怎么解决。

--------------------------------------------------------
事件提交的写法就是变了、差不多、、、、
总哈哈 2010-09-19
  • 打赏
  • 举报
回复
我看了好几个mvc的源代码,没有哪个项目处理这个,我就好奇了,国外查询和显示都是分开的?不像国内上面是查询,下面是显示a .
加载更多回复(3)

初学MVC遇到以下几个问题,现贴出来与大家共享!
一、如何调试MVC程序
  1)修改web.config,在web.config的assemblies配置节中找到,删除或注释掉此行

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧