ASP.NET核心标记助手和结果HTML差异

时间:2018-02-01 20:15:34

标签: c# asp.net-core asp.net-core-tag-helpers

对于标题不清楚的道歉,但不知道如何指定它,请随时编辑我的问题。

我设法在Razor Pages中为给定的代码编写等效代码:

我的标记:

<a asp-page="./Index" asp-route-id="@Model.InstructorID" asp-route-courseID="@item.CourseID">Select</a>

这导致以下HTML:

<a href="/Instructors/2?courseID=1045">Select</a>

第二个标记:

@Html.ActionLink("Select", "OnGetAsync", new { courseID = item.CourseID })

这导致以下HTML:

<a href="/Instructors/2?courseID=1045&amp;action=OnGetAsync">Select</a>

我想知道的是:除了生成的不同网址以及网址中的不同部分是什么意思之外,两者之间有什么区别?

修改

这是我的Startup课程:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<Data.SchoolContext>(options => options.UseSqlServer(Configuration.GetConnectionString("ContosoUniversityConnectionString")));

        services.AddMvc();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseBrowserLink();
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
        }

        app.UseStaticFiles();

        app.UseMvc();
    }
}

1 个答案:

答案 0 :(得分:1)

我很确定,Html.ActionLink无法与Razor Pages一起正常工作,因为它正在生成路由信息中的链接,并与控制器和操作相关。 Razor Pages没有控制器和操作。所以AnchorTagHelper在这里效果最好。