@Bibort

Как проверить на null Vue.JS из Модели ASP.Net?

Привет. Хочу поместить внутрь метода Vue значения из модели ASP.NET, с предварительной проверкой на null:
new Vue({
        el: "#app",
            data: {
                tags:[]
            },
methods: {
                addTags: function() {
                    if(@Model != null && @Model.Tags != null){
                        this.tags = ((@Model.Tags).split(','));                      
                    }
                    else {
                            this.tags = [];
                    }
                }
            }

Получаю NullReferenceException в строке if(@Model != null && @Model.StringTags != null)

Как правильно сделать?

Спасибо!
  • Вопрос задан
  • 548 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Bibort Автор вопроса
Лучше будет произвести проверку в Razor, и если она пройдёт, то должен быть вызван метод JS.
@if(Model != null && Model.Tags != null)
                {
                    addTags(@Model.StringTags) // внутри Razor JS не принимается
                    
                }


Как внутри Razor вызвать JS?
Ответ написан
@kttotto
пофиг на чем писать
Судя по тому, что Вы хотите сделать split, предполагаю, что Model.Tags имеет тип string.
Тогда, как вариант, можно сделать так
addTags: function() {
	this.tags = @Json.Serialize(Model?.Tags?.Split(',') ?? []);
}


Ошибка в этой строке
if(@Model != null && @Model.Tags != null)
потому, что @Model приведется к string в разметке, а @Model.Tags вставится как строка как есть. И в разметке выйдет что-то такое
if(System.Object != null && tag1,tag2,tag3 != null) { ... }

Ну и понятно, что такая разметка в браузере даст ошибку. Поэтому, перед тем как вставить модель в разметку js, лучше делать сериализацию к json. Ну либо делать как-то так
if('@(Model?.Tags ?? "")'.length > 0) { ... }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы