Могу ли я получить доступ к свойствам модели MVC в отдельном файле js, указанном в файле .cshtml

Я искал решение, и DotSlashSlash имеет ответ, спрятанный в одном из комментариев!

Для полноты ответа и простейшего решения:

UIImage *myGradient = [UIImage imageNamed:@"textGradient.png"];
myLabel.textColor   = [UIColor colorWithPatternImage:myGradient];
1
задан Yadukrishnan M 19 March 2019 в 13:47
поделиться

2 ответа

Шаблоны Razor выводят текст, который обычно может быть «страницей» (html / css / js), обслуживаемой с типом содержимого text / html. Но вы можете использовать другие типы контента, такие как text / javascript, если хотите.

Сначала создайте действие контроллера, украшенное атрибутом ActionName:

public class ScriptsController {
    [ActionName("model.js")]
    public ActionResult ModelJs() {
        var model = new Object();  // your actual model here.
        return View();
    }
}

Затем создайте свое представление, которое аналогично тегу script на текущей странице:

[ 111]

убедитесь, что вы удалили элемент script со своей текущей страницы.

Затем обратитесь к новому представлению js на своей странице:

<script type="text/javascript" src="@Url.Action("model.js", "Scripts")"></script>
0
ответ дан Sam Axe 19 March 2019 в 13:47
поделиться

Вы можете создать конструктор для своей модели JavasScript, а затем создать его с помощью бритвенного кода.

Например:

Модель

public class Car{
    public string Brand { get; set; }
    public string Fuel { get; set; }
}

Файл Javascript в шаблоне модуля, но вы также можете использовать что-то еще:

var car = (function(jsonModel){
    var runs = "My " + jsonModel.Brand + " runs on " + jsonModel.Fuel;
    return {
        Runs : runs
    }
    });

Вид бритвы

]
@model Car

<!--load the javascript file somewhere-->

<script type="text/javascript">
    $(function(){
        var myFord = new car(@Html.Raw(Json.Encode(@Model)) );
            alert(myFord.Runs);
        });
</script>

.NET fiddle Я не могу добавить внешний файл javascript, но вы, вероятно, поймете точку

Хотя я должен сказать, что использование @ Html.Raw не Рекомендуется, так как это делает вас уязвимым для атак XSS (читайте больше в Интернете после поиска). Лучше вернуть объект JSON из вашего контроллера.

Редактировать

Вот пример того, как использовать JsonResult на контроллере .Net fiddle

    [HttpGet]
    public JsonResult Car()
    {
        return Json(new Car("ford","gasoline"), JsonRequestBehavior.AllowGet);
    }

для просмотра бритвы JS, чтобы получить результат json и создайте экземпляр вашего JS-модуля

$(function(){
            var model = $.ajax({
                url: "@Url.Action("Car","Home")",
                dataType: 'json',
                contentType: 'application/json; charset=utf-8',
            }).done(function(response){
                console.log(response);
                var myFord = new car(response);
                alert(myFord.Runs);
            });
        });
0
ответ дан Daniël Tulp 19 March 2019 в 13:47
поделиться
Другие вопросы по тегам:

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