利用asp.net mvc架构编写web应用时我们想得到了是符合
Controller/Action/ID的url,当然也不是一概而论,有些时候(比如分页时)
我们还有可能希望得到别的像类似
Blog/Page/ID的url这就得要在Global.asax.cs文件里配置路由了
可是这样美观的URL规则有的时候得注意一点
在我的一个view里有这样一个ActionLink
<%=Html.ActionLink("编辑我的资料","Edit",new {id = Model.UserId.ToString() })%>
它指向EditAction方法
我的EditAction是这样写的
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit(string userid){//code}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(string userid,FormCollection form){//code}
但结果url正确可是值却传不过去
测试了好几遍userid的值都为NULL
后来才发现原来是V和A里参数名一致的时候没有问题
所以C里的代码应该改成
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit(string id){//code}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(string id,FormCollection form){//code}
那我想如果我把View里面的改成userid呢
结果传值的url变成了?key=ssfs的形式
分析一下其实还是路由控制的问题
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
因为默认的是id
一点小经验
本文探讨了ASP.NET MVC中路由配置的重要性及其对ActionLink中参数传递的影响。通过实例展示了如何正确设置控制器方法参数以确保URL美观且参数传递无误。
561

被折叠的 条评论
为什么被折叠?



