代码改变世界

MVC问题小总结,不断更新中...

2011-06-28 17:21  smat  阅读(762)  评论(0编辑  收藏  举报

1、运行项目时,浏览器中图片或JS文件、样式文件都找不到?

在程序中不报错,用【设计】查看页面时,图片样式都能找到,到浏览器中就找不到啦?

解决方案:

查看Global.asax文件中,

 

public static void RegisterRoutes(RouteCollection routes)  
{  
   routes.IgnoreRoute(
"{resource}.axd/{*pathInfo}");  
   routes.RouteExistingFiles 
= true;  
    routes.MapRoute(  
    
"Default"// Route name  
    "{controller}/{action}/{id}"// URL with parameters  
    new { controller = "Index", action = "Index", id = UrlParameter.Optional }, // Parameter defaults  
     new string[] { "Web.Controllers" }  
     );  
}  

 

 注意:

注释掉://routes.RouteExistingFiles = true;   

 

2、MVC3中多了一些新特性【

Unobtrusive JavaScript in ASP.NET MVC 3】 

 

 

Ajax.ActionLink浏览器中代码解析问题?

 

 <% = Ajax.ActionLink("动态" , "Index" , " Index " , new { id = 1 }, new AjaxOptions () { LoadingElementId = "Loading" , UpdateTargetId = "Main" , HttpMethod = "Get" , OnFailure = "dialogOpen"  })%>

 

<!--以下是常规Javascript下写出来的Ajax--> 

 <href="/Manager/1" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, httpMethod: 'Get', loadingElementId: 'Loading', updateTargetId: 'Main', onFailure: Function.createDelegate(this, dialogOpen) });">动态</a>

 

<!--以下是Unobtrusive Javascript下写出来的Ajax--> 

 

<data-ajax="true" data-ajax-failure="dialogOpen" data-ajax-loading="#Loading" data-ajax-method="Get" data-ajax-mode="replace" data-ajax-update="#Main" href="/Manager/1">动态</a>

 

 

以上的代码分别是 MVC 3 在“关闭”和“开启” Unobtrusive JavaScript 后生成的 Ajax.ActionLink。 

 

那 Unobtrusive JavaScript到 底是什么呢?简单地来说,就是一种代码分离的思想,把行为层和表现层分离开。

 

 

解决方案:修改Web.config 

MVC3中的Web.Config文件中默认多了两个配置项 

 <configuration>  

<appSettings>  
    
<add key="ClientValidationEnabled" value="true"/>   
    
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>   
  
</appSettings>  
</configuration>  

 

这里是一个全局设置,你可以打开或者关闭。

 

另外,你也可以在任何一个 Action 或 Controller 中执行以下代码,灵活地进行控制,来处理一些特殊的 Action 或 Controller。 

HtmlHelper.ClientValidationEnabled = true;

HtmlHelper.UnobtrusiveJavaScriptEnabled = true; 


3、待续...