重要提示:这个问题实际上并不是一个ASP.NET问题.任何对URL都有所了解的人都可以回答.我恰好使用ASP.NET路由,因此包含了这个细节.
简而言之,我的问题是:
"我应该设计哪种URL格式,我可以让外部各方到达我的网站上的特定位置,以便将来证明.[我是创建这些'REST'网址的新手]."
我需要一个ASP.NET路由URL,该URL将提供给第三方用于跟踪营销活动.它本质上是一个"网关"URL,可将用户重定向到我们网站上的特定页面,该页面可能是主页,特殊竞赛或特定产品.
除了试图捕捉的引荐我将需要接受PARTNERID,竞选号码和其他可能的参数.我想提供一个这样做的路线,但我想第一次就把它弄好,因为很明显,一旦外部使用它,我就不能轻易改变它.
这样的事情怎么样?
routes.MapRoute(
"3rd-party-campaign-route",
"campaign/{destination}/{partnerid}/{campaignid}/{custom}",
new
{
controller = "Campaign",
action = "Redirect",
custom = (string)null // optional so we need to set it null
}
);
Run Code Online (Sandbox Code Playgroud)
广告系列:可能不希望在实际链接中使用"广告系列"一词 - 因为用户会在网址栏中看到它.我可能会把它变成像'c'这样神秘的东西.
destination:指示我们网站上链接将用户带到哪个页面.例如PR将用户引导到产品页面.
partnerid:我们分配的公司的ID - 例如堆栈溢出的SO.
campaignid:广告系列ID,例如123 - 每个合作伙伴都是唯一的.我已经意识到,我认为我希望第三方公司能够自己管理广告系列ID,而不是我们提供一个网站来"制作广告系列".虽然我还不完全确定.
自定义:自定义数据(可选).我可以在不破坏现有URL的情况下添加更多自定义数据参数
注意:我有"目的地"的原因是因为广告系列ID是由客户决定的,因此他们还需要告诉我们该广告系列的目的地在哪里.或者,他们可以"注册"我们的活动.这可能是一个更好的解决方案,以避免人们放入随机的广告系列ID,但我并不过分担心,我认为这个系统提供了更大的灵活性.
此外,我们想知道他们用来链接我们的图像(因此我们可以跟踪哪个横幅效果最好).我认为这是一个新的竞选活动,而不是自定义数据领域,但我不确定.
目前我使用的是非常原始的URL,例如http://example.com?cid=123.在这种情况下,广告系列ID需要发布给第三方,它不是一个非常灵活的系统.我想立即转向新客户的新系统.
关于未来打样这个系统的任何想法?我可能错过了什么?我知道我总是可以添加新格式,但如果这是一个好主意我想尽可能多地使用这种格式.
我正在使用Jon Skeet非常聪明的SmartEnumerable.如果您还没有看过,我建议您查看一下.
该类定义如下:
public class SmartEnumerable<T> : IEnumerable<SmartEnumerable<T>.Entry>
Run Code Online (Sandbox Code Playgroud)
构造函数是:
public SmartEnumerable(IEnumerable<T> enumerable)
Run Code Online (Sandbox Code Playgroud)
你用它来说:
new SmartEnumerable<Cat>(myCats); // where myCats is IEnumerable<Cat>
Run Code Online (Sandbox Code Playgroud)
现在我真的想让编译器推断我有一系列的猫,并且能够说:
new SmartEnumerable(myCats);
Run Code Online (Sandbox Code Playgroud)
但是这给了我一个编译器错误:
无法从用法推断出方法'MiscUtil.Collections.SmartEnumerable.SmartEnumerable(System.Collections.Generic.IEnumerable)'的类型参数.尝试显式指定类型参数.
我不清楚为什么会这样.有没有办法绕过它.为什么它不能看到我正在使用IEnumerable<Cat>并从中推断出来.我可以改变任何东西,让它识别我正在使用的类型吗?
我真的想要一些方法来构建一个SmartEnumerable而不必指定类型 - 因为我主要在ASP.NET MVC中使用它来获取UI,我并不总是includes对类型有所依赖并依赖于var我的参考.我最终必须包含类型才能使用SmartEnumerable - 这会降低其优雅.
哦,我会直接通过电子邮件发送给John,但他反正可能会更快回复:-)
<font color=white>skeet skeet skeet, jon, jon, jon, jon skeet, skeet jon, skeetster, skeetmeister</font>
我需要一个解决方案来解决"默认按钮"老化问题.即你在文本框中按Enter键,但表单上有一个提交按钮,而不是你想要触发的按钮(或者你可能根本不希望该表格被触发).
我想知道以下'解决方案'.有点hacky,但据我所知,应该是可靠的.
在表格内部,第一件事是一个看不见的按钮.然后一些jquery立即禁用它.如果您在表单上按Enter键,此按钮将被视为"默认按钮"并被触发,但由于"return false"事件处理程序而无效.
我以前见过的解决方案依赖于keydown事件处理程序之类的东西,或者其他看似复杂/难以在每个浏览器中测试的东西.
我的解决方案(我以前没见过,但可能不是唯一的)似乎更简单,我认为非常可靠.您甚至可以判断javascript是否已被禁用且有人点击进入,因为服务器将在表单数据中收到此按钮.
<form action="/store/checkout" method="post">
<input id="btnFakeSubmit" name="FakeSubmit" src="/images/pixel.gif"
style="width:1px; height:1px; position:absolute;" type="image" />
<script>
$('#btnFakeSubmit').click(function() {
return false;
});
</script>
Run Code Online (Sandbox Code Playgroud)
有关此解决方案的任何建议 - 包括在所有浏览器中隐藏按钮的最佳方法.
看起来MVC 2 RC1中存在一个问题,如果你想使用jQuery.Validate而不是主要的Microsoft AJAX - 即使是gzip也是25kb.
据Phil Haack说,你应该能够包含这些脚本:
<script src="/Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript">
Run Code Online (Sandbox Code Playgroud)
不幸的是,在一些重组中,他们在Beta和RC之间做了 - 你现在还需要包含MicrosoftAjax.js哪个定义Type所使用的原型函数MicrosoftMvcJQueryValidation.js(第一行Type.registerNamespace('Sys.Mvc');是定义的MicrosoftAjax.js)
是否有人已经从中提取出必要的代码MicrosoftAjax.js?我迟早要做,但如果有人已经这样做了会有很多帮助!
是否有任何现有的管道在BackgroundWorker中批量运行WCF调用?
显然,因为所有Silverlight WCF调用都是异步的 - 如果我在后台工作程序中运行它们,它们都将立即返回.
我只是不想实施讨厌的黑客,如果这是一个很好的方式来运行服务调用并收集结果.
编辑:我也注意到(当使用Fiddler时)任何时候都不能发送大约7个电话.即使在浏览器外运行时,此限制也适用.这是由于我的默认浏览器设置 - 还是可配置的.显然它是一个穷人的解决方案(并不适合我想要的)但我可能需要考虑的事情,以确保我的应用程序的其余部分保持响应,如果我将此作为后台任务运行而不是希望它耗尽我所有的联系.
使用Silverlight Toolkit非常容易实现基本的拖放.
http://silverlightfeeds.com/post/1325/Silverlight_Toolkit_adds_DragDrop_targets.aspx
不幸的是,似乎包装器ListBoxDragDropTarget搞砸了ListBox的正常默认行为,它将自身伸展到父控件 - 例如本例中的网格单元.
<Grid Background="Yellow">
<toolKit:ListBoxDragDropTarget AllowDrop="True">
<ListBox x:Name="customerListBoxMain"
DisplayMemberPath="Name">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</toolKit:ListBoxDragDropTarget>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我最终在这里(在将数据绑定到之后ListBox)用一个小的列表框调整大小以适应其位于黄色框中间的内容.
没有任何数量HorizontalAlignment=Stretch似乎能够让它填充父框.
我怎样才能ListBox填补Grid?
当尝试使用SVCUTIL.EXE(在命令行或通过Visual Studio)创建Web服务代理(WCF )时,我得到以下无意义的错误消息.
注意:该服务没有任何问题,因为它可以在另一台机器上正常工作.这是Windows的新安装,该服务在我的本地盒子上.使用不同机器上的URL在我的机器上生成相同的代理工作正常.
这是怎么回事?!
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.1]
Copyright (c) Microsoft Corporation. All rights reserved.
Attempting to download metadata from 'https://ws1.example.com/ShoppingCartWS/WCF/ShoppingCartWCF.svc?wsdl' using WS-Metadata Exchan
Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageCont
Error: Schema with target namespace '' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='IShoppingCart']
Error: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType …Run Code Online (Sandbox Code Playgroud) text=''每当model.id为null时,我想重置输入字段()的值.
如何绑定输入值以响应可观察对象的某个值?看起来像:
<input type="text" data-bind="text: if (model.value == null) { '' }" />
Run Code Online (Sandbox Code Playgroud) 好的,所以网格显然很棒.过去两天我一直在看基金会,Twitter的Bootstrap,Semantic和Responsive.gs,我仍然无法找出一个简单的问题:
I have 4 horizontal sections with an image header and text.
I want each to take up 25%.
Run Code Online (Sandbox Code Playgroud)
调整屏幕大小时:
I need the rightmost section to disappear
Each remaining section should therefore take up 33%
Run Code Online (Sandbox Code Playgroud)
如果我.span3为12列网格放置类,那么我必须使用javascript将它们更改.span4为不是我想要的.
我已经看过symentic标记(不在代码中放入魔术类),但这只是变得非常复杂,除了Semantic之外,大多数框架都不完全支持.
这看起来很简单,但我有点卡住了.
在angular中有两个非常相似的命名指令(或属性)
ng-component 和 ng-container
如果您放ng-component而不用,ng-container则会出现各种奇怪的行为,例如自动插入<router-outlet>。
我经常想知道ng-component用户代码中实际上有一个目的。
这是遗产吗?只是内部的吗?它可以解决任何问题吗?
asp.net-mvc ×2
silverlight ×2
angular ×1
asp.net ×1
c# ×1
css ×1
form-submit ×1
forms ×1
generics ×1
javascript ×1
jquery ×1
knockout.js ×1
listbox ×1
ng-container ×1
rest ×1
routing ×1
wcf ×1
wcf-client ×1