Каков наилучший способ обработки тегов на стороне сервера внутри файла js? - PullRequest
1 голос
/ 15 февраля 2010

Я использую Asp.NET MVC и сильно зависел от JQuery во всем приложении (не уверен, важно ли это здесь или нет). Я пытаюсь создать набор файлов библиотеки JS, чтобы соответствовать моим взглядам. Проблема, с которой я столкнулся, заключается в том, что мне нужен способ управления расположением файлов на моем сервере и ссылками на действия для всех моих карт изображений и вызовов ajax.

На данный момент я застрял, помещая весь свой код сценариев внутри каждой страницы aspx, чтобы я мог использовать теги сценариев на стороне сервера, например:

    $("#StartDate").datepicker({
        changeMonth: true,
        changeYear: true,
        showOn: 'button',
        buttonImage: '<%= Url.Content("~/Content") %>/Images/calendar.png',
        buttonImageOnly: true
    });

и

    function fillDates(periodType, periodOffset)
    {
      $.ajax({
        url: '<%= Url.Action("GetDates", "Tracking") %>',
        dataType: "json",
        data: {"pt": periodType, "po": periodOffset},
        success: function(result){
            if (result.Status == "Success")
            {
                $("#StartDate").val(result.StartDate);
                $("#EndDate").val(result.EndDate);
            }
            else
            {
                alert(result.Status + ": " + result.Message);
            }
        }
      });        
    }

Я бы хотел переместить этот код в файл js. Как бы я это сделал и все же смогу сопоставить с корневым каталогом моего приложения.

Ответы [ 2 ]

3 голосов
/ 15 февраля 2010

Вы можете разместить базовый URL в своем представлении и ссылаться на него из своих файлов js

// site.master
var appPath = <%=ResolveUrl("~/")%>;

// *.js
function dosomething()
{ 
    var src = appPath + "content/images/test.png";
    var action = appPath + "controller/action";
}

Примечание: этот метод требует, чтобы вы вручную записывали URL-адреса действий вместо вызова Url.Action().

1 голос
/ 15 февраля 2010

Хотя я никогда не пробовал, вы можете отобразить файлы .js в обработчик ASP.NET и обработать их, когда они будут обработаны. То, как вы выполняете это сопоставление, зависит от версии IIS, и вы, вероятно, будете использовать HTTPModule для выполнения обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...