, , . , , ( , - ). Default Asp.net MVC id
{controller}/{action}/{id}
id = UrlParameter.Optional
:
public ActionResult Index() { ... }
public ActionResult Index(int id) { ... }
, . , , .
, , SubactionAttribute, :
[Subaction("Details")]
public ActionResult Members(long id)
{
var member = _payment.GetMember(id);
return View("Members.Details", member);
}
[Subaction]
public ActionResult Members()
{
var members = _payment.GetMembers().ToList();
return View("Members.List", members);
}
, , , , :
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public sealed class SubactionAttribute : ActionMethodSelectorAttribute
{
#region Properties
public string Name { get; private set; }
#endregion
#region Constructors
public SubactionAttribute()
: this(null)
{
}
public SubactionAttribute(string subactionName)
{
this.Name = subactionName;
}
#endregion
#region ActionMethodSelectorAttribute implementation
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
if (controllerContext == null)
{
throw new ArgumentNullException("controllerContext");
}
string subName =
return this.Name == subName;
}
#endregion
}