Почему я не могу ссылаться на файлы JavaScript в моем представлении?

Ваша проблема сопоставима с созданием файлового объекта и открытием файла. На самом деле существует много классов, где вам нужно выполнить два шага, прежде чем вы сможете реально использовать объект: create + Initialize (часто называемый чем-то похожим на Open).

Преимущество этого заключается в том, что конструктор может быть легким, а функция Open может выполнять сложную и трудоемкую работу. Эта функция Open может даже быть асинхронной.

Недостатком является то, что вы должны доверять пользователю своего класса, который он назовет Initialize (), прежде чем он будет использовать любую другую функцию вашего класса. На самом деле, если вы хотите сделать свой класс полным доказательством (доказательство дурака?), Вам нужно проверить каждую функцию, которую вызывается Initialize ().

Шаблон, чтобы сделать это проще, - объявить конструктор private и сделать публичную статическую функцию, которая построит объект и вызовет Initialize () перед возвратом построенного объекта. Таким образом, вы узнаете, что все, кто имеет доступ к объекту, использовали функцию Initialize.

В примере показан класс, который имитирует ваш желаемый конструктор async

public MyClass
{
    public static async Task<MyClass> CreateAsync(...)
    {
        MyClass x = new MyClass();
        await x.InitializeAsync(...)
        return x;
    }

    // make sure no one but the Create function can call the constructor:
    private MyClass(){}

    private async Task InitializeAsync(...)
    {
        // do the async things you wanted to do in your async constructor
    }

    public async Task<int> OtherFunctionAsync(int a, int b)
    {
        return await OtherFunctionAsync(a, b);
    }

. Использование будет быть следующим:

public async Task<int> SomethingAsync()
{
    // Create and initialize a MyClass object
    MyClass myObject = await MyClass.CreateAsync(...);

    // call something else
    return await myObject.OtherFunctionAsync(4, 7);
}
1
задан pnuts 22 August 2018 в 16:07
поделиться

2 ответа

Правильный ли путь к файлу сценария в вашем представлении?

Если вы проверяете HTTP-трафик с помощью чего-то вроде вкладки Fiddler или Firebug's Net, вы видите, что ресурсы вашего сценария загружаются в браузер?

Возможно, вы захотите использовать UrlHelper.Content и относительный путь для рендеринга источника скрипта на странице или, возможно, создать метод расширения HtmlHelper для рендеринга тега скрипта для вас (я думаю, что он существует в MVCContrib , если вы это уже используете).

2
ответ дан 2 September 2019 в 22:22
поделиться

Итак, если у вас есть блок, объявленный во включенном файле (давайте просто представим, что он выглядит так)

function alertMe(someValue) {
  alert(somevalue);
}

, а на вашей главной странице aspx и ascx у вас есть

<script type="text/javascript">
  alertMe("some string");
</script>

, и он работает на главной странице и в ascx, но не в aspx?

0
ответ дан 2 September 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: