是否可以从XDocument XElement调用动作?

时间:2019-06-24 22:38:21

标签: c# asp.net-core asp.net-core-mvc

我正在使用.NET Core中的XDocument生成日历,并将其作为标记助手传递给视图。

我想使每一天都可单击,并将每一天的日期作为ID传递给另一个控制器中的操作。是否可以使用XDocument或仅生成原始HTML?

理想情况下,我想做的是这样:每天@Html.ActionLink("", "ActionName", "ControllerName", new { date = d })

我尝试将<div>class="day"包装在<a>作为d的{​​{1}} XAttribute中-使日期变为可点击状态并传递DateTime在网址中,但我不知道如何调用特定操作。

href

2 个答案:

答案 0 :(得分:0)

假设此代码在控制器中,则可以通过调用controllerbase的Url属性(实现IUrlHelper)来设置锚的href。

例如:new XAttribute(“ href”,Url(“ ActionName”,“ ControllerName”,new {date = d}))

答案 1 :(得分:0)

我可以通过使用LinkGenerator实现这一目标:

public class CalendarTagHelper : TagHelper
{
    private readonly LinkGenerator _linkGenerator;

    public CalendarTagHelper(LinkGenerator linkGenerator)
    {
        _linkGenerator = linkGenerator;
    } 

然后在href XElement的a中调用此方法,并传递d作为参数:

    private string GetDayUrl(DateTime date)
    {
        return _linkGenerator.GetPathByAction("Day", "Home", values: {date = date});
    }