EDIT
Возможно, я не очень хорошо сформулировал свою проблему. Проблема заключается не столько в маршрутизации, сколько в попытке получить фактический URL запроса.
Приложение может быть развернуто на многих отдельных машинах. Например
http://localhost:2990/Client/List
http://avapd024/llne.dev/Client/List
http://machine123:81/llne.prod/Client/List
и т. Д.
Причина, по которой я не могу использовать помощники Action.Link или html, заключается в том, что мне нужно создать ссылку, прежде чем я верну ее в представление, поскольку оно заполняется в виде сетки с использованием JSON (datatables.net) и NOT, а также времени представления отображается
спасибо
Мне нужно заполнить сетку списком элементов в виде ссылок, указывающих на другой контроллер и действие и идентификатор.
например;
когда я загружаю сетку, URL-адрес выглядит следующим образом: http://localhost:2990/Client
, что хорошо. Сетка содержит ссылку, подобную следующей
JSID = "<a href='http://" + RequestUrl + "/trainingdelivery/Get/" + referral.ReferralId + "'>Training Delivery</a>",
контроллером является 'trainingdelivery', а действием является 'Get' и id = referralid, что приводит к URL-адресу, подобному http://localhost:2990/trainingdelivery/Get/12345
). Это нормально на моей локальной машине, но при развертывании он идет на сервер с другим URL-адресом, таким как http://avapd024/llne.dev:81/
, поскольку вы можете видеть, что llne.dev:81 - это веб-сайт IIS, и мне нужно получить URL-адрес, где бы он ни находился это распознать его местоположение и перейти к правильному контроллеру и действию.
Я пытался использовать объект запроса, и, возможно, я мог бы взломать его там, чтобы получить его, но я хотел бы знать, есть ли более лучшие решения?
спасибо
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.js/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
AJAX CALL IN JQUERY
oTable = $('#referralTable').dataTable(
{
"bFilter": true,
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"bAutoWidth": false,
"sAjaxSource": "../Client/Fetch",
"aoColumns": [
//client details
{"bVisible": false, "sName": "ReferralId" },
{ "sTitle": "CRN", "sName": "CRN" },
{ "sTitle": "JSID", "sName": "JSID" },
{ "sTitle": "Name", "sName": "Name" }
]
});
sAjaxSource - это вызов, который загружает сетку с данными и возвращает JSON. К тому времени, когда он возвращается, его необходимо правильно отформатировать.