Javascript 如何在一个没有';你不能继承控制器吗?

Javascript 如何在一个没有';你不能继承控制器吗?,javascript,c#,asp.net-mvc,Javascript,C#,Asp.net Mvc,我正在开发一个c#mvc应用程序,并在我的应用程序中使用此javascript日历:。我展示的事件是法庭听证会。以下是我的服务中构建法庭听证陈述的方法部分: var obj = new { id = hearing.id, title = string.Format("Hearing ({0} - {1}) in the case №{2}/{3}", hearing.HearingStart.Value.ToString("H:mm"), hearing.HearingEnd.

我正在开发一个c#mvc应用程序,并在我的应用程序中使用此javascript日历:。我展示的事件是法庭听证会。以下是我的服务中构建法庭听证陈述的方法部分:

var obj = new
{
    id = hearing.id,
    title = string.Format("Hearing ({0} - {1}) in the case №{2}/{3}", hearing.HearingStart.Value.ToString("H:mm"), hearing.HearingEnd.Value.ToString("H:mm"), hearing.CaseNumber, hearing.CaseYear),
    start = hearing.HearingStart.Value.ToString("yyyy-MM-dd HH:mm:ss"),
    end = hearing.HearingEnd.Value.ToString("yyyy-MM-dd HH:mm:ss")
};
在方法的这一行中:

title = string.Format("Hearing ({0} - {1}) in the case №{2}/{3}", hearing.HearingStart.Value.ToString("H:mm"), hearing.HearingEnd.Value.ToString("H:mm"), hearing.CaseNumber, hearing.CaseYear)
我想使案例编号成为指向此网站的ActionLink:

我在google和stackoverflow.com中查找了一些示例,它们显示了在c#code中使用ActionLink的正确语法(不是在视图中,而是在服务方法中),但没有找到任何示例

以下是控制器中的方法:

public ActionResult GetHearingsForJudgePanel(string id, int? month = null, int? year = null, int? caseNumber = null, int? caseYear = null)
{
    if (!Request.IsAjaxRequest())
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

    int currentMonth;
    int currentYear;
    DateTime currentDate = DateTime.Now;
    EventService service = new EventService();
    IEnumerable<object> data;

    if (id == "")
    {
        id = null;
    }

    if (month.HasValue)
        currentMonth = month.Value;
    else
        currentMonth = currentDate.Month;

    if (year.HasValue)
        currentYear = year.Value;
    else
        currentYear = currentDate.Year;

    data = service.GetHearingsForJudgePanel(id, currentMonth, currentYear, caseNumber, caseYear);

    return Json(data, JsonRequestBehavior.AllowGet);
}
public ActionResult GetHearingsForJudgePanel(字符串id,int?month=null,int?year=null,int?caseNumber=null,int?caseYear=null)
{
如果(!Request.IsAjaxRequest())
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
int当前月;
int本年度;
DateTime currentDate=DateTime.Now;
EventService=新的EventService();
可数数据;
如果(id==“”)
{
id=null;
}
如果(月值)
currentMonth=month.Value;
其他的
currentMonth=currentDate.Month;
如果(年份价值)
currentYear=年份值;
其他的
currentYear=currentDate.Year;
数据=服务。GetHearningsforJudgePanel(id、当前月、当前年、案例号、案例年);
返回Json(数据,JsonRequestBehavior.AllowGet);
}
以下是我的服务方法: public IEnumerable GetHearings for JudgePanel(字符串id、整数月、整数年、整数案例号、整数案例年) { 列表结果=新列表(); 列表听证会=新列表()

string constr=System.Configuration.ConfigurationManager.ConnectionStrings[“DappeConnection”].ToString();
con=新的SqlConnection(cont);
听证会=con.Query(“GetHearningsforCalendar”,新的{id,月,年,案例号,案例年},commandType:commandType.StoredProcedure.ToList();
const string protocol=“http://”;
常量字符串baseAddress=“93.152.175.226”;
常量字符串路径=“/Cases/Details/”;
foreach(听证会中的var听证会)
{
var link=$“{he‌​aring.CaseNumber}”;
var obj=新
{
id=hearing.id,
title=string.Format(在本例中为“{0}-{1}”)№{2} /{3},hearing.HearingStart.Value.ToString(“H:mm”),hearing.hearingand.Value.ToString(“H:mm”),link,hearing.CaseYear),
开始=hearing.HearingStart.Value.ToString(“yyyy-MM-dd HH:MM:ss”),
end=hearing.hearingand.Value.ToString(“yyyy-MM-dd HH:MM:ss”)
};
结果:添加(obj);
}
返回结果;
}

在MVC控制器中,您可以通过基类
System.Web.MVC.Controller
Url
属性访问
UrlHelper

var link = Url.Action("Details", "Cases", new { id = caseNumber });
如果链接应构建在一个类中,而该类不继承自
System.Web.Mvc.Controller
(例如ViewModel或服务),则可以通过传递当前RequestContext来创建
UrlHelper

var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
var link = urlHelper.Action("Details", "Cases", new { id = caseNumber });

或者将UrlHelper从控制器注入服务方法。

以后,请注意编写一个实际包含信息的问题标题。没有一个人在这里发帖的问题在任务中不需要帮助。清晰的问题描述有助于筛选垃圾,否则每天都会淹没此站点。=)好的,我将使我的问题标题更具信息性谢谢你的帮助,我在我的服务类中使用你的语法创建了“var urlHelper”字段,我成功地使用了“urlHelper.Action”。我阅读了Action方法的10个重载,但我真的不知道该使用哪一个,以及如何构造一个名为“的Action”№345“(这是一个案例编号-harding.CaseNumber),指向地址“”(“327688”是caseId-harding.caseId)。你能帮我完成我的任务吗(我需要一个正确的动作方法语法)?下面应该可以做到:
Url.Action($)№{hearing.CaseNumber}”,“Details”,“Cases”,new{caseId=hearing.caseId},null)
。这不会发生,因为这个地址“93.152.175.226/Cases/Details/327688”是internet上一个站点的地址,与我的应用程序没有连接。我的应用程序中没有“案例”控制器或“案例/详细信息”视图。哦,我明白了。操作将仅用于解析您自己应用程序中的路径。也许您只是使用字符串创建链接标记。格式:
conststringprotocol=“http://”;常量字符串baseAddress=“93.152.175.226”;常量字符串路径=“/Cases/Details/”;变量链接=$”我尝试了你的建议,但是输出是这样的:案例中的听力(0:00-0:30)№93.152.175.226/Cases/Details/221283“>53898/2014。我在我的服务中发布了整个方法,它可能会帮助您了解整个情况,我只想提及日历是由javascript而不是c#制作的。以下是服务方法:
var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
var link = urlHelper.Action("Details", "Cases", new { id = caseNumber });