Alb*_*ini 5 asp.net asp.net-mvc routes overloading asp.net-mvc-2
我创建了一个asp.net mvc网站
我的问题是如何实现重载动作方法
调节器
public ActionResult Index(int id)
{
//code
return View(model);
}
public ActionResult Index()
{
//code
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
视图
<div id="menucontainer">
<ul id="menu">
<li><%= Html.ActionLink("Home", "Index", "Home")%></li>
<%if (Page.User.Identity.IsAuthenticated)
{%>
<li><%= Html.ActionLink("Profilo", "Index", "Account")%></li>
<%} %>
<li><%= Html.ActionLink("About", "About", "Home")%></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
Usercontrol(ascx)插入View中.此用户控件列出了配置文件的朋友(视图)
<td>
<%= Html.ActionLink(Html.Encode(item.Nominativo), "Index", "Account", new { id = item.IdAccount }, null)%>
</td>
Run Code Online (Sandbox Code Playgroud)
全球的asax
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Run Code Online (Sandbox Code Playgroud)
当我在视图中单击操作索引时,返回错误"找不到资源... ecc .."
我找到了这个问题的几个答案(使用属性ecc ..)但是没有用.
有办法吗?我必须在全局的asax中添加maproute吗?
非常感谢您的回复
Max*_*oro 10
您需要使用ActionMethodSelector属性装饰两个重载以消除歧义.ASP.NET MVC不知道如何选择适当的重载.
解决方法是在同一方法中处理这两个操作:
public ActionResult Index(int? id) {
if (id.HasValue) {
// id present
} else {
// id not present
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6460 次 |
| 最近记录: |