В файле Views/Home/Index.cshtml напишем код:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<!-- head -->
<head>
<meta name="viewport" content="width=device-width" />
<title>Page</title>
</head>
<!-- style -->
<style>
.myText {color: green;}
</style>
<!-- body -->
<body>
@Html.ActionLink("My link1" /*linkText*/, "Show" /*action*/)
<!-- будет сгенерирован элемент
<a href="/Home/Show">My link1</a>
Home это контроллер данного(текущего) View
-->
@Html.ActionLink("My link2" /*linkText*/, "Show" /*action*/, new { author = "Monte Kristo" } /*route*/)
<!-- будет сгенерирован элемент
<a href="/Home/Show?author=Monte Kristo">My link2</a>
Home это контроллер данного(текущего) View
-->
@Html.ActionLink("My link3" /*linkText*/, "Show" /*action*/, "MyController1" /*controller*/)
<!-- будет сгенерирован элемент
<a href="/MyController1/Show">My link3</a>
-->
@Html.ActionLink("My link4" /*linkText*/, "Show" /*action*/, new { author = "Monte Kristo", id = 10 } /*route*/, null /*htmlAttributes*/)
<!-- будет сгенерирован элемент
<a href="/Home/Show/10?author=Monte Kristo">My link4</a>
Home это контроллер данного(текущего) View
/Home/Show/10 это controller/action/id такой путь записан в маршрутизаторе файл RouteConfig.cs (объяснение ниже)
-->
@Html.ActionLink("My link5" /*linkText*/, "Show" /*action*/, "MyController1" /*controller*/, new { author = "Monte Kristo", price = 30 } /*route*/, null /*htmlAttributes*/)
<!-- будет сгенерирован элемент
<a href="/MyController1/Show?author=Monte Kristo&price=30">My link5</a>
-->
@Html.ActionLink("My link6" /*linkText*/, "Show" /*action*/, null /*route*/, new { @class = "myText", width="300px" } /*htmlAttributes*/)
<!-- будет сгенерирован элемент
<a class="myText" href="/Home/Show" width="300px">My link6</a>
Home это контроллер данного(текущего) View
-->
@{
RouteValueDictionary dict1 = new RouteValueDictionary();
dict1["author"] = "Monte Kristo";
}
@Html.ActionLink("My link7" /*linkText*/, "Show" /*action*/, dict1/*RouteValueDictionary*/, null /*htmlAttributes*/)
<!-- будет сгенерирован элемент
<a href="/Home/Show?author=Monte Kristo">My link7</a>
Home это контроллер данного(текущего) View
-->
@{
RouteValueDictionary dict2 = new RouteValueDictionary();
dict2["author"] = "Monte Kristo";
}
@Html.ActionLink("My link8" /*linkText*/, "Show" /*action*/, "MyController1" /*controller*/, dict2/*RouteValueDictionary*/, null /*htmlAttributes*/)
<!-- будет сгенерирован элемент
<a href="/MyController1/Show?author=Monte Kristo">My link8</a>
-->
</body>
</html>
в файле Views/Home/Index.cshtml
...
@Html.ActionLink("My link6" /*linkText*/, "Show" /*action*/, null /*route*/, new { @class = "myText", width="300px" } /*htmlAttributes*/)
...
new {свойство1 = значение1, ...} означает
объект с анонимным типом. Читать подробнее ...
Внимание! Мы пишем
@class потому что мы не можем писать просто
class из за ошибки компиляции. Слово
class это зарезервированное слово. Компилятор когда встречает слово
class он считает что это
объявление класса в C#...
C#
new { author = "Monte Kristo", id = 10 }
это тоже объект с анонимным (отсутствующим) типом в C# ...
Файл Views/Home/Index.cshtml
...
@Html.ActionLink("My link4" /*linkText*/, "Show" /*action*/, new { author = "Monte Kristo", id = 10 } /*route*/, null /*htmlAttributes*/)
<!-- будет сгенерирован элемент
<a href="/Home/Show/10?author=Monte Kristo">My link4</a>
Home это контроллер данного(текущего) View
-->
...
C#
Файл App_Start\RouteConfig.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace WebApp1
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
На заметку!
C#
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
это объект с анонимным (отсутствующим) типом в C# ...