此处将为大家介绍关于有人可以向我介绍asp.net路由语法吗?的详细内容,并且为您解答有关有人可以向我介绍asp.net路由语法吗的相关问题,此外,我们还将为您介绍关于asp.net–有人可以帮我理解
此处将为大家介绍关于有人可以向我介绍asp.net路由语法吗?的详细内容,并且为您解答有关有人可以向我介绍asp.net路由语法吗的相关问题,此外,我们还将为您介绍关于asp.net – 有人可以帮我理解这个堆栈跟踪吗?、asp.net – 有人可以解释VistaDB吗?、asp.net-mvc – 具有不同参数名称的Asp.Net路由、asp.net-mvc – 回发无法使用ASP.NET路由(视图状态MAC验证失败)的有用信息。
本文目录一览:- 有人可以向我介绍asp.net路由语法吗?(有人可以向我介绍asp.net路由语法吗)
- asp.net – 有人可以帮我理解这个堆栈跟踪吗?
- asp.net – 有人可以解释VistaDB吗?
- asp.net-mvc – 具有不同参数名称的Asp.Net路由
- asp.net-mvc – 回发无法使用ASP.NET路由(视图状态MAC验证失败)
有人可以向我介绍asp.net路由语法吗?(有人可以向我介绍asp.net路由语法吗)
public static void RegisterRoutes(RouteCollection routes) { Route r = new Route("{*url}",new MyRouteHandler()); routes.Add(r); routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{resource}.gif/{*pathInfo}"); }
首先,任何人都可以告诉我{* pathInfo}的定义在哪里?
http://msdn.microsoft.com/en-us/library/cc668201.aspx#url_patterns没有真正定义它。请问:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
比赛
/c/xyz.axd and /b/c/xyz.axd and /a/b/c/xyz.axd
而
routes.IgnoreRoute("{resource}.axd");
只有比赛
/xyz.axd
其次,在:
{*url}
这是什么意思?而整个表达是什么意思呢?有没有明确的解释?
第三,是否有特定的顺序需要添加这些表达式来正确忽略路由?我知道{* url}是某种可能的,如果IgnoreRoutes来到它之前或之后,例如
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{resource}.gif/{*pathInfo}"); Route r = new Route("{*url}",new MyRouteHandler()); routes.Add(r);
解决方法
路由不是正则表达式。它只是组成路由的变量和静态组件,由段(由斜杠标识)分隔。有一个特殊符号,最后一个变量中的星号,这意味着从这里,忽略段分隔符 – 斜杠。所以,
{*url}
是最简单的路由,因为它意味着取整个URL,将其放入变量“url”,并将其传递到与该路由相关联的页面。
{controller}/{action}/{id}
将所有内容都放在第一个分段(第一个斜杠)到变量“controller”中,将第一个和第二个之间的所有内容放在变量“action”中,第二个和第三个斜杠(或结束)之间的所有内容,进入变量’id’。然后将这些变量传递到关联页面。
{resource}.axd/{*pathInfo}
这里把信息放在.axd /(它不能有任何斜线!)到’资源’,并把所有的第一个/进入’pathInfo’。由于这通常是一个ignoreRoute,所以不是将其传递给关联的页面,而是由StopHandler处理,这意味着路由将不会处理它,而是由非路由HttpHandler处理。
如bleevo所说,路由被执行,以便它们被添加到集合中。所以在处理通用路由之前必须添加IgnoreRoute。
这是马的嘴:http://msdn.microsoft.com/en-us/library/cc668201.aspx
具体到你的例子,我会把IgnoreRoute行放在你的路线之上,因为你的路由实际上是一个全部的。另外,请记住.gif忽略只有在gif位于根目录下才能被保证。
asp.net – 有人可以帮我理解这个堆栈跟踪吗?
at ASP.controls_si_item_ascx.__Render__control1(HtmlTextWriter __w,Control parameterContainer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.Control.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer,ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.Htmlform.renderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at System.Web.UI.HtmlControls.Htmlform.render(HtmlTextWriter output) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter adapter) at System.Web.UI.HtmlControls.Htmlform.renderControl(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.Page.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterasyncPoint)
解决方法
终于找到了答案:)在我的.ascx文件中,我有一些JavaScript根据控件ID选择了一个选项卡.事实证明,在某些情况下控制不可用,因此会引发对象引用错误.这是我的代码:
var hdnSCSSelectedTabIndex=$('#<%= hdnSCSSelectedTabIndex.ClientID %>'); var tabIndex = hdnSCSSelectedTabIndex.val();
而我现在这样做:
<% if (hdnSCSSelectedTabIndex != null) { %> var hdnSCSSelectedTabIndex=$('#<%= hdnSCSSelectedTabIndex.ClientID %>'); var tabIndex = hdnSCSSelectedTabIndex.val(); <% } %>
已经解决了问题.
希望这有助于别人:)
asp.net – 有人可以解释VistaDB吗?
或者我可以将商业网站放在使用VistaDB的Win2003服务器上吗?它比使用sql DB更快吗?它安全吗?
困惑…
解决方法
VistaDB是一个嵌入式数据库(其他一些嵌入式数据库是sqlite和FireBird).这基本上意味着您的数据库对您的最终用户完全“不可见”.例如,他们不需要像sql Server那样安装客户端/服务器数据库.部署VistaDB很简单.您所需要的只是数据库文件和应用程序中对VistaDB运行时DLL的引用.
使用VistaDB作为后端的商业应用程序是Graffiti CMS.
asp.net-mvc – 具有不同参数名称的Asp.Net路由
这两个代码块的Admin / controller / action / param,
@ Url.Action(“action”,“controller”,new {id =“param”})和
@ Url.Action( “行动”,“控制器”,新的{类型= “参数”})
我所做的是在区域注册中的以下内容,
context.MapRoute( "Admin_default","Admin/{controller}/{action}/{id}",new { action = "Index",id = UrlParameter.Optional },new string[] { "namespaces" }); context.MapRoute( "Admin_type","Admin/{controller}/{action}/{type}",type = UrlParameter.Optional },new string[] { "namespaces" });
当参数名称为id时,生成的url是预期的,但是当参数名称是type,而不是controller / action / typevalue时,它会生成类似controller / action /?type = typevalue的内容
有没有办法生成像控制器/动作/类型值的url保持Admin_default路由的生成器行为完整?
解决方法
when parameter name is id,url generated is as expected,but when
parameter name is type,instead of controller/action/typevalue,it
generates something like controller/action/?type=typevalue
发生这种情况是因为第一条路线用于映射网址(ID是可选的).
您可以尝试为路线添加一些约束.我猜你的id参数是一个整数,type参数是一个字符串.在这种情况下,您可以尝试使用此路线:
context.MapRoute( "Admin_default",new { id = @"\d+" },new string[] { "namespaces" }); context.MapRoute( "Admin_type",new string[] { "namespaces" });
您可以找到有关路线约束here的更多信息.
asp.net-mvc – 回发无法使用ASP.NET路由(视图状态MAC验证失败)
一切正常,我有自定义SEO网址甚至回发作品.但有一种情况,回发总是失败,我得到一个:
验证视图状态MAC失败.如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法. AutoGenerate不能在群集中使用.
以下是重现错误的方案:
>使用按钮创建标准webform mypage.aspx
>创建一个将“a / b / {id}”映射到“〜/ mypage.aspx”的路线
>当您执行该站点时,您可以导航http://localhost:XXXX/a/b/something页面工作.但是当你按下按钮时会出现错误.当Route只是“a / {id}”时,不会发生错误.
它似乎与url中的子路径数有关.如果至少有2个子路径,则视图状态验证失败.
即使使用EnableViewStateMac =“false”,您也会收到错误.
有任何想法吗?这是一个错误吗?
谢谢
解决方法
public class ViewUserControlWithoutViewState<T> : ViewUserControl<T> where T : class { protected override void LoadViewState(object savedState) {} protected override object SaveControlState() { return null; } protected override void LoadControlState(object savedState) {} protected override object SaveViewState() { return null; } /// <summary> /// extracted from System.Web.Mvc.ViewUserControl /// </summary> /// <param name="viewContext"></param> public override void RenderView(ViewContext viewContext) { viewContext.HttpContext.Response.Cache.SetExpires(DateTime.Now); var containerPage = new ViewUserControlContainerPage(this); ID = Guid.NewGuid().ToString(); RenderViewAndRestoreContentType(containerPage,viewContext); } /// <summary> /// extracted from System.Web.Mvc.ViewUserControl /// </summary> /// <param name="containerPage"></param> /// <param name="viewContext"></param> public static void RenderViewAndRestoreContentType(ViewPage containerPage,ViewContext viewContext) { string contentType = viewContext.HttpContext.Response.ContentType; containerPage.RenderView(viewContext); viewContext.HttpContext.Response.ContentType = contentType; } /// <summary> /// Extracted from System.Web.Mvc.ViewUserControl+ViewUserControlContainerPage /// </summary> private sealed class ViewUserControlContainerPage : ViewPage { // Methods public ViewUserControlContainerPage(ViewUserControl userControl) { Controls.Add(userControl); EnableViewState = false; } protected override object LoadPageStateFromPersistenceMedium() { return null; } protected override void SavePageStatetoPersistenceMedium(object state) {} } }
我blogged about this前一段时间.
关于有人可以向我介绍asp.net路由语法吗?和有人可以向我介绍asp.net路由语法吗的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于asp.net – 有人可以帮我理解这个堆栈跟踪吗?、asp.net – 有人可以解释VistaDB吗?、asp.net-mvc – 具有不同参数名称的Asp.Net路由、asp.net-mvc – 回发无法使用ASP.NET路由(视图状态MAC验证失败)的相关信息,请在本站寻找。
本文标签: