如果有问题,请在此回复即可。
因为博客有邮件提示,如果通过其它方式联系我可能会慢很多
2010年12月更新
posted @ 2009-12-16 14:22
重典 阅读(1705)
评论(100) 编辑 收藏
发表评论
mvc的框架是正式版1,新建的view和框架默认生成的view页面都不带cs页面;这是为什么呢?是不是要设置什么 还是 本来就不带
@leoho000
不带.cs文件是对的,
View仅是负责界面设计,所以不应涉及逻辑问题
我在 Global.asax.cs 中配置好了一个新的规则 但在浏览器中输入地址 无法识别
规则:
routes.MapRoute(
"Blog",
"Blog/{entryDate}",
new { controller = "Home", action = "Entry" }
);
Home.Entry
public ActionResult Entry(DateTime entryDate)
{
return View()
}
输入 localhost/Blog/2009-12-21 就报错 无法识别
@小流
Url不要手动输入
localhost/Blog/12%2F22%2F2009%2009%3A56%3A16
就可以了,如果你要使用2009-12-21地的方式还要接收的是这样
"Blog/{year}-{month}-{day}",
Entry(int year,int month,int day)
为什么Action都要有ActionResult 返回值?
@半套狐狸
ActionResult与MVC模式并无关系
其实在旧版本中使用
void ActionName(){
RenderView("viewpage");
}
这样的方式也是可以的
ASP.NET MVC 增加此返回值是为了增加程序的可测试性
即在编写单元测试时可以获取到各种结果
希望楼主可以写一写 MVC V2版本和V1版本的一些异同,一些改进的地方。能够象介绍V1版本那样介绍一下是最好不过了,不过这的确需要时间整理。
支持了!
问题:当有个链接id我能不能传到指点的public ActionResult ResellerAdd(long? id)里,然后加载到ResellerAdd页里
@leoho000
可以使用Html.RenderAction("ResellerAdd","ControllerName",new{id=yourids});
如果使用Ajax的话直接 访问/ControllerName/ResellerAdd?id=xxx即可
我把用MVC开发的项目部署到IIS上···
然后在某段时间更新其中N个文件···
但是文件覆盖了,但是运行还是原来的旧版本···
是不是涉及到缓存问题···
我用的版本是mvc 2
现在每次都要在VS中重新编译··然后删除IIS上的,再上传!
请问应该如何解决!
谢谢前辈
@黎锦洪
可能性很多,你重启一下相应的应用程序池看看
看了您的mvc视频,其中看到表单和复选框时,我按照您的方式做了,发现htmlhelper怎么没有radiobuttonlist呢。。还是我vs2008有问题呢。
@Jaryleely
正式版本的确没有这个Helper,可以使用Foreach代替
重典兄
不妨介绍下防盗链、防蜘蛛、动态Action的实现思路。
或者发EM给我: dbens@163.com
多谢赐教!
为了防止盗链,我头都大了。
重典兄,
我想借着改造我的一个手机网站(日文)的机会,学习一下mvc。
遇到一个比较烦的问题,我想在view被输出之前,针对不同的手机,把view中的一些内容替换成不同的格式,不知道该怎么办,想使用Action Filter,但不知道怎么写。
给点建议吧。多谢。
汗,我把问题想复杂了,其实只要写一个Html Helper类就可以搞定。
在Help类里区分手机,输出不同的内容。
mvc 项目发布。
配置了网站的扩展名.mvc,(在服务器网站主目录,非项目目录)
也把System.Web.Mvc dll 放到 bin 目录下了。
但访问主页还是重定向到了Error页面、
为什么
www.cmltl.cn
典兄,网站放万网空间,不能访问,因为它不让配置iis,请问这情况如何解决?
dbens@163.com
@dbens
一般你联系空间服务商就能解决,不过万网不知道,如果不行的话可以用Godaddy的空间,也不算贵,可以Alipay支付
MVC2好像取消了Html.SubmitButton了...
@北极冰雪
是的,一些不需要进行数据绑定或RouteDatas的Helper都去掉了
我在首页绑定了新闻列表,然后加了个查询,在Controller获得了查询的参数,如何进行查询?
我首页用了SqlHelper分页
@白叔叔
,不好意思,不太理解你的意思
我猜可能是你现在已经做了分页,但是可能还有其它搜索条件,问怎么加上是吗?
@白叔叔
那样的话可以
假设name是搜索条件,如标题 名
ActionResult Page(int p,string name){
//你的 SQL 生成
if(!string.IsNullOrEmpty(name)){
//如果不为空就在SQL后面多拼一个条件
}
//查询 return
}
楼主你好,
看了你的MVC视频教程,视频中用的是VS2008,
问下VS2005可以安装asp.net MVC吗?
我想下个Catharsis框架,这个是asp.net MVC的框架吗
您好 我在项目里使用一个form来post back到服务器,其中这个form内含有一个用户控件,控件里有一些文本框,当我post back的时候,出现“验证视图状态 MAC 失败”的错误,就算我在web.config或页面的page里加上EnableEventValidation="false" EnableViewStateMac="false",问题依旧。不知博主和各位有没遇见这种情况,先感谢各位了
@小刚qq
{username},
new{controller="Blog",action="index"}
在对应的Action中
public ActionResult Index(string username){
//COding
}
在MVC中。我使用jquery的dialog 把 文本编辑器放在dialog里面设置。
第一次dialog("open")
我在dialog 的load里面 将 dialog里面的textarea用
脚本转成文本编辑器。
编辑完成我把diaolog("close")。
当第二次 dialog("open")的时候。
load执行了但是编辑器就不能输入内容、看不见光标。什么状况?
@白色胡萝卜
Dialog用的是哪一个呢,会不会是你重复生成了RText了呢
JQuery的dialog
用
$(div).dialog("open");
打开
用
$(div).dialog("close");
关闭的
不清楚有没有重复生成。
用FF看源码,这个text是被转换了的。就是看不见光标。
终于弄好了。
原来dialog("close")的时候
text 生成的 ifram 没有清掉
第二次生成的绑到第一次上面去了
dialog("close")不会清除页面数据。
以后大家使用要注意了哦
特别是用于生成的东西
如果你的Vs2008是中文请安装中文的2008SP1
如果是英文请安装英文的2008Sp1
请教如果MVC程序部署到托管网站的虚拟目录,比如:xxx.com/admin,路由规则要做什么改变?为什么我在根目录下访问可以,到虚拟目录下会出现:The incoming request does not match any route.的错误?
@test1001
你看看你的文件是否部署全了,比如global.asax文件是否复制过去了
MVC1.0的问题
MVC框架生成一个默认程序,/default.cs下有下面的语句
string originalPath = Request.Path;
HttpContext.Current.RewritePath(originalPath, false);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
HttpContext.Current.RewritePath(originalPath, false);
当根目录的访问到达时不是会启用默认路由规则吗?为什么还需要上面的转移?去掉上面的代码后会显示一个空页面,不会路由到/home/index
这是早期用于应付一些不支持路由规则的IIS的,后期认为如果IIS不配置就是不想支持,所以就没有再存在这个文件了
我是想问:当访问根目录时xxx.com/时会访问IIS设置的默认页(default.aspx),而路由规则controller缺省时应该为home,为什么去掉default.cs里面代码就访问不了home/index了(我指IIS6)
@test1001
旧版本IIS,在使用默认页时会检查文件存在
@重典
重典老师,你好:
我看了你的视频updateMode模式后,受益非浅,谢谢
但我现在有个问题想请教一下,请帮忙一下,谢谢
你在你的视频中讲了用UpdateModel模式进行数据提交与处理,但你只讲了用Textbox控件的方式,传递string类型的数据。
我现在的问题是,如果我想用这种方式
而view端需要显示一个下拉列表或一个RadiobuttonList,这样如何实现View端显示下拉列表,又如何在用户提交后取出用户的选择值呢?盼指教,谢谢
请教:
自定义的AuthorizeAttribute,重载OnAuthorization,里面能访问到action的名字吗?非得要重写FilterAttribute,才能访问ActionDescriptor.ActionName?
@test1001
是的,要重写
不过可以
void OnAuthorization(){
base.OnAuthorization();
//..
}
你好,请问?我在使用MvcContrib 控件的时候,遇到了疑问,
做验证的时候,根本找不到MvcContrib.Samples.FormHelper.dll 这个文件啊, 目前最新版本里好像没有MvcContrib.UI.Tags 这个命名空间了。
请指点下
@有理想的猪头
此文写于2年多以前,ASP.NET MVC Preview
现在MVCContrib已经几经重大改变已经没有此功能了,因为ASP.NET MVC本身 已经集成了验证和部分的Helper功能
@重典
哎,谢谢 ,重老师了,不过我觉得还是那种验证方式好用啊,
那现在只有用JQUERY VALIDATION 了,。
请教:MVC1问题
根目录设置default.cs里下列可以访问默认路由,
string originalPath = Request.Path;
HttpContext.Current.RewritePath(Request.ApplicationPath, false);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
HttpContext.Current.RewritePath(originalPath, false);
如果有管理目录如admin,路由添加
routes.MapRoute(
"Admin", // Route name
"admin/{controller}.ashx/{action}/{id}", // URL with parameters
new { controller = "User", action = "LogOn", id = "" } // Parameter defaults
);
那么admin下的default.cs该怎么写呢?
HttpContext.Current.RewritePath(Request.ApplicationPath+"admin", false);为什么不行?
@test1001
其实不用变,你只要再设置一个规则
"",new{controller="User",action="LogOn"}
就可以了
在哪里能找到asp.net mvc2.0的部署说明,需要的framework版本最低多少
@Staid
不好意思QQ好友已满,如果需要帮助请上传你的配置截图,我随时在
你好,请教个问题:我在godaddy有个虚拟主机,子目录创建的站点 路径上带有子目录名称,比如:www.abc.com/123/index.htm ,其中123就是子目录站点的文件夹名,用mvc怎么去掉?
地址栏输入,去掉 123 路径 也可以正常访问,但是 Html.ActionLink 生成地址会自动加上 子目录(123),怎样才能 生成不带 虚拟目录(文件夹名)的路径呢? 或者替换掉 目录名
@yiki
您好,您描述的问题我没有太看明白,你是根目录放的是ASP.NET MVC程序还是123里,你要生成的路径的目标是个什么,Controller/Action?还是静态文件
@重典
mvc 程序放在了 123 这个文件夹里(应该是一个虚拟目录),路由生成的地址是这个样子 "/123/home/index" 。通过 /123/home/index 访问到首页,去掉 123 : "/home/index" 也可以正常访问, 所以我的意思是,怎样通过一个方法,一下全部去掉 路由生成的路径 里的 "/123" 。
要生成的路径是
Controller/Action
但是 由于程序是在子目录下面,所以 生成目标路径 就成了:
123/Controller/Action 。(它自动把程序所在的文件夹名给加上了)
现有
public class AAAModel
{
public AAAEntity AAA { get; set; }
}
public class AAAEntity
{
public string a { get; set; }
public string b { get; set; }
}
用UpdateModel绑定数据到Model,应该如何指定只绑定属性“a",不绑定属性“b”呢?
周老师您好:最近在看您的WebMarix系列课程。我想问一下在WebMarix点VS那个图标怎么打开VS2010旗舰版,现在点那图标提示要安装vs2010速成版。我的VS2010旗舰版已经装了ASP.NETMVC 3的中文版了,WebMarix也是中文版的
@chen111
暂时没有办法重现,也没有遇到过类似问题
可能是WebMatrix的Bug
您看下重新通过Web Platform来安装WebMatrix是否能解决此问题
邹老师您好:我也是在观看WebMatrix系列课程中,使用WebPI安装WebMatrix(其中也自动安装了Visual Web Developer 2010 Express),在边听边做中,当点击Visual Studio启动图标,启动的是该速成版,并且没有代码的智能标记,都是黑白显示。如何解决呢?另外是否能推荐一些WebMatrix的学习资料吗(包括Razor内容的)。谢谢,祝福新年快乐!
@wdawei
使用智能感知要安装Microsoft WebPage Tools
好像现在没有单独的安装包,你可能通过使用WebPI间接安装ASP.NET MVC 3.0来安装它
这样就可以了
您好:找到原因,是安装APS.NET MVC3时有一个补丁KB2483190装不上,报的错是:KB2483190 不适用,或是您计算机上的其他条件阻止了它。现在就是不知道怎么装上这个补丁。看了网上有很多人也是这个原因,不知道老师碰到过没
邹老师您好:智能标识的问题按照您的推荐得到了解决,可以正常显示,但是VS弹出安装“Windows 自动化 3.0”的提示,我使用的XP SP3,没找到该安装程序,是否要安装。另外,看到您演示在WebMatrix、VS2010中使用格式化源代码操作(挺快捷的),该操作如何完成呢?
@wdawei
Windows 自动化 3.0: 个问题没有遇到过,你可以看看你是不是安装了什么依赖程序
格式化代码默认可以通过 CTRL+K,CTRL+F(二阶快捷键) 来完成
我的WebMatrix 数据库无法实现动态Id编号,致使再向数据库插入数据时出错,是WebMatrix版本的问题吗?
重典,有一个问题
一个varchar类型的字段,名字叫NAME,在该字段上边创建了一个非聚集索引,我查询时,这样的语句索引会起作用吗?
select * from table where name like 'm%'
和select * from table where name like '%m%'
我有个想法是否可行。。我想不适用Html的帮助类..我直接适用一样的Html控件是否可以很好的使用asp.net MVC原理
对刚刚的那个问题从新阐述一下。。我就是在aspx页面不使用asp.net MVC的HTML帮助类。。我直接使用以前的HTML控件。。是否可以很好的完成asp.net MVC
@实力决定权利
不一定,例如LinkButton 其实不具备Routing的功能,所以完全不可以
但是在不绑定数据的情况下TextBox是可以代替Html.TextBox这个Helper的
所以对于是否使用控件的问题,仅仅是“不建议”,因为会带来很多麻烦
我看你的mvc视频里面有view下有.aspx.cs文件,为什么我创建的没有,会影响神马东西?怎么才能显示?
@Teddy_SE
早年的版本(Preview2以前)会有,之后去掉了,不影响任何东西
重典 你好。我观看了你的为c盘瘦身的视频。到最后一步就是映射到c盘出现一个installer快捷方式时。打开出现错误。提示是:c:windows\instaler引用了一个不可用位置,可能信息被移到其他地方。这个问题如何解决?
@Youth melody
C:\windows\Installer是否已经删除了呢,参数是否写反了?
重典你好,向你请教一个问题哈。我最近在用MVC3做个东西,用他的route来伪静态。
其中有个route如下:
routes.MapRoute(
"for search", // Route name
"{city}/{param}.html", // URL with parameters
new { controller = "Home", action = "Index", city = UrlParameter.Optional, param = UrlParameter.Optional } // Parameter defaults
);
如果访问
http://localhost:52297/全国/p-1-s-11.html" target="_blank">http://localhost:52297/全国/p-1-s-11.html
是可以到我指定的controller里面去的。问题出现在url没有更新,如果我是从
“http://localhost:52297/全国”跳转去访问“http://localhost:52297/全国/p-1-s-11.html" target="_blank">http://localhost:52297/全国/p-1-s-11.html”url地址栏 没有任何变化,但是我调试又能进入Action,并且拿到的参数也是对的。经过查询等操作(查询到的东西也是正确的)不过数据好像没有得到更新。而且页面一直卡起就不动了。
如果我用
@Url.Action("Index", new { Controller = "Home", city = "成都", param="p-1-s-11" });产生的地址http://localhost:52297/全国?param=p-1-s-11去访问的话,url地址栏就是正常的,数据也是得到了更新,是正常的情况。访问速度也很快。
但是有问号?的这种样式就显得就不那么伪静态了。
请求你的帮助,谢谢啦。
我想用mvc2做一个在线的做作业的系统,就是从数据库中取出作业的内容,显示到网页上,然后在弄一个radiobutton组,显示ABCD,之后再传回controller中,与数据库中的答案进行比较,如果正确则把正确的题目数count加1,可是现在烦恼的是如何把radiobutton的值传回并接收,由于一页有多个radiobutton组,因此不知道要如何和数据库中的数据进行比对,而且作业还分可见和不可见,不知道重典哥有啥好的意见吗,求教啊~
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Online
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>在线作业</h2>
<% using (Html.BeginForm())
{%>
<%: Html.ValidationSummary(true)%>
<fieldset>
<legend>Fields</legend>
<% foreach (var item in Model)
{ %>
<%int i = item.HomeworkID; %>
<%--<div class="display-label">HomeworkConten</div>--%>
<% if (item.HomeworkIsVisual == true)
{%>
<div class="display-field"><%: item.HomeworkConten%></div>
<%:Html.RadioButton(i.ToString(), "A")%>A
<%:Html.RadioButton(i.ToString(), "B")%>B
<%:Html.RadioButton(i.ToString(), "C")%>C
<%:Html.RadioButton(i.ToString(), "D")%>D
<br />
----------------------------------------------------------------
<%} %>
<%} %>
<p>
<input type="submit" value="submit" />
</p>
</fieldset>
<%} %>
<%:Html.ActionLink("Back To List","Index") %>
</asp:Content>
@重典
你好,我看了你的MVC视频教程。
在看到HtmlHelper时没有发现Html.SubmitButton
我用的是VS2010,请问用什么实现按钮呢?谢谢~
@miro
直接<input type=submit value="xxxx"/>就好
@mrprince
radiobutton要保证他们的name相同才是一组
如果你一定要使用RadioButton Helper的话可以
使用htmlAttributes来保证他们name相同而id不同
@重典
tks~
顺便问下,以HtmlHelper返回的input元素如:<%:Html.TextBox("Username")%>和直接<input type="text" value="xxx" />产生的有何区别?
为什么有些input元素HtmlHelper会没有?
@重典
有个问题:直接<input type=submit value="xxxx"/>的话,点击不会触发post事件,将参数传到edit中。如下:
<%=Html.ActionLink("编辑页","edit","user",
new{word="zhongdian"},new{@class='x'})%>
<%using (Html.BeginForm("edit", "user", FormMethod.Post,
new { id = "myform" }))
{%>
username:<%:Html.TextBox("Username")%>
<br />
password:<%:Html.Password("Password")%>
<br />
<input type="button" value="提交" />
<% } %>
@重典
重典兄,虚拟主机,IIS6通过通配符映射支持MVC,性能会损失多少,有没有大概数据?
@blog_doudou
新版本中已经改为BeginForm并去掉了Submit的按钮
可以通过以下方式来构造表单
@using(Html.BeginForm()){
<input type="submit" />
}
想问一下博主:
在用到像tinyMCE这样的富文本编辑器的时候,怎么解决像这类问题:System.Web.HttpRequestValidationException 从客户端(description="<p>asp.net mvc</p>")中检测到有潜在危险的 Request.Form 值。
@Rookie_J
加一个Filter
[ValidateInput(false)]
到你的Action上
@Rookie_J
是否是加到了接收数据的Action上了呢