Szukaj…


Wprowadzenie

T4MVC to szablon T4, który generuje silnie typowane pomocniki do użycia w mechanizmach routingu MVC, w przeciwieństwie do magicznych ciągów. T4MVC wykryje różne kontrolery, akcje i widoki oraz utworzy odniesienia do tych widoków, popełniając błędy kompilacji w przypadku, gdy próba trasy lub dostępu do widoku jest nieważna.

Calling a Action

W MVC istnieje kilka scenariuszy, w których chcesz określić akcję dla celów routingu, albo dla łącza, akcji formularza lub przekierowania do akcji. Możesz określić akcję za pomocą przestrzeni nazw MVC.

Po podaniu kontrolera, takiego jak HomeController :

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ...
    }
    public ActionResult MyAction()
    {
        ...
    }
    public ActionResult MyActionWithParameter(int parameter)
    {
        ...
    }
}

T4MVC wygeneruje odziedziczony kontroler, który zastąpi akcję. To zastąpienie ustawia poprawnie dane trasy, dzięki czemu MVC UrlHelper wygeneruje odpowiedni UrlHelper URL. Możesz wywołać tę metodę i przekazać ją do różnych metod UrlHelper . W poniższych przykładach założono, że używana jest domyślna trasa MVC:

Połączyć

Aby wygenerować a znacznika z określonym tekstem:

@Html.ActionLink("Link Text", MVC.Home.Index() )
//result: <a href="/">Link Text</a>
@Html.ActionLink("Link Text", MVC.Home.MyAction() )
//result: <a href="/Home/MyAction">Link Text</a>
//T4MVC also allows you to specify the parameter without creating an anonymous object:
@Html.ActionLink("Link Text", MVC.Home.MyActionWithParameter(1) )
//result: <a href="/Home/MyActionWithParameter/1">Link Text</a>

Aby wygenerować adres URL:

@Url.Action( MVC.Home.Index() )
//result: /
@Url.Action("Link Text", MVC.Home.MyAction() )
//result: /Home/MyAction
@Url.Action("Link Text", MVC.Home.MyActionWithParameter(1) )
//result: /Home/MyActionWithParameter/1

Zauważ, że T4MVC stosuje te same zasady, co MVC Routing - nie określi domyślnych zmiennych trasy, tak że akcja Index na HomeController nie generuje /Home/Index ale doskonale poprawną i skróconą formę / .

Metoda formularza

Aby wygenerować tag form z określoną poprawną action :

@Html.BeginForm( MVC.Home.Index(), FormMethod.Get /* or FormMethod.Post */ )
{
    //my form
}
//result:
<form action="/" method="GET">
    //my form
</form>
@Html.BeginForm( MVC.Home.MyActionWithParameter(1), FormMethod.Get /* or FormMethod.Post */ )
{
    //my form
}
//result:
<form action="/Home/MyActionWithParameter/1" method="GET">
    //my form
</form>

Przekieruj do działania

Będąc w kontrolerze, możesz chcieć przekierować do akcji z bieżącej akcji. Można to zrobić, lubię:

public class RedirectingController : Controller
{
    public ActionResult MyRedirectAction()
    {
        ...
        return RedirectToAction( MVC.Redirecting.ActionToRedirectTo() );
        //redirects the user to the action below.
    }
    public ActionResult ActionToRedirectTo()
    {
        ...
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow