@Html.ActionLink("Cart (" + ViewData["CartCount"] + ")", "Index", "ShoppingCart", new { id = "cart-status" })
最后一句
new { id = "cart-status" }
这个表示嘛玩意?
大哥 我知道这个是 routeValues 我要问的是id = "cart-status" 这里边的 car-status要表达什么呀 controller里边对应的Index的action参数是int id
@mushishi: 大哥,你贴的代码是 CartSummary.ascx 部件的(注意后缀名),它被用在 Site.Master 中(<% Html.RenderAction("CartSummary", "ShoppingCart"); %>),它对应的是 ShoppingCartController.CartSummary。
然后请你打开 ShoppingCart/Index.aspx 文件,找到 function handleUpdate(context),注意其中有这样一条语句:$('#cart-status').text('Cart (' + data.CartCount + ')'),对没错,这就是更新 id 为“cart-status”的文本的 js。
然后请你运行程序,转到 http://localhost:xxxx/ShoppingCart 页面,通过 IE 的开发人员工具,查看页面右上角的“Cart(X)”部件,你会发现它对应的脚本为:<a id="cart-status" href="/ShoppingCart?Length=12">Cart (0)</a>。好了,现在请回到 Store,添加几张唱片后,在回到 ShoppingCart 页面,现在你能看到一个你已经选择了的唱片的列表,点击“Remove from cart”,你会发现页面没有整个刷新,但是右上角的“Cart(X)” 变化了。
PS:我不做网站开发,也不懂 JS,所以别追问我 JS 的问题,太高深了,不懂。
@Launcher: soga 太感谢了 , 不过你不做网站开发 怎么懂那么多页 您干啥的 problem killer?
@mushishi: 差不多吧,改 BUG 的。
@Launcher: ?Length=12 这个参数是哪里设置的 一直没找到;
id = "cart-status" 这个只是设置的a标签的id属性吧
@mushishi: 知道了 貌似这个是MS例子的bug 阿狸噶多
@mushishi: 应该是个 BUG 吧,我对比了下 Html.ActionLink 的几个重载版本,CartSummary.ascx 中的正确写法应该是:
<%: Html.ActionLink("Cart (" + ViewData["CartCount"] + ")", "Index", "ShoppingCart",null, new { id = "cart-status" })%>
原来的代码中把 “ShoppingCart” 当着了 routeValues 使用,因为 “ShoppingCart” 是 string 类型,所以在 Build Url 的时候,就读取了 string.Length 属性作为参数追加到 url 上。
@Launcher: 嗯 我也是对着重载方法的参数一个个匹配过去 觉得莫名其妙 刚刚在codeplex上发现别人也有同样的疑问才确认是MS的bug
@Launcher: @Html.ActionLink("Cart (" + ViewData["CartCount"] + ")", "Index", "ShoppingCart",null, new { id = "cart-status" }) 加个参数就不会搞错了
这个Id应该是跳转的参数