ActionNameAttribute
如果你想跟基本的C#一樣,在MVC的Controller可以製作多個同名Action的多載方法,如下圖
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace WebApplication2.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Index(string toSendResult)
{
return Content(toSendResult);
}
}
}
你將會在成功編譯後並在執行時出現「含糊的Action方法」問題,
The current request for action […] is ambiguous between the following action methods,
解決的作法有一、更改routes.MapRoute,二、使用[ActionName] 屬性。
使用ActionNameAttribute的範例路徑說明、
先準備
index.cshtml
@Html.ActionLink("About2", "About2", new { id = 3, name = "aaa" })
Controller.cs
using System.Web.Mvc;
namespace WebApplication2.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About(int? id)
{
return View(id);
}
[ActionName("About2")]
public ActionResult About(int? id, string name)
{
return View((object)(id + name));
}
}
}
說明:
當點下@Html.ActionLink("About2", "About2", new { id = 3, name = "aaa" })連結時,
將會經過標有ActionName("About2")屬性的action,
然後跳到About2.cshtml頁面。
參考資料: