Вы должны иметь возможность использовать его так же, как и любой другой вывод свойства модели в вашем представлении.Просто укажите свойство, которое вы хотите передать в функции JS.
@model options
<script>
dosomething('@(model.Url)');
</script>
См. этот пост для получения дополнительной информации об использовании Razor внутри JS
РЕДАКТИРОВАТЬ - Что может вас заинтересовать, так это то, что если ваш URL не работает в кодировке HTML, которую Razor использует, используя вышеизложенное, вы можете использовать функцию @Html.Raw()
, которая передаст свойство Url без кодировки HTML.
<script>
dosomething('@Html.Raw(model.Url)');
</script>
РЕДАКТИРОВАТЬ 2 - И еще один SO пост на помощь!Скорее всего, вы захотите преобразовать свою модель в JSON, чтобы использовать ее в функции Javascript.Итак ... для этого вам понадобится что-то в вашей модели представления для обработки объекта JSON.
public class optionsViewModel
{
public options Options{get;set;}
public string JsonData{get;set;}
}
и в вашем контроллере:
public class mycontroller : controller
{
public ActionResult WhatToDo()
{
options obj = new options{Url="someurl"};
var myViewModel = new optionsViewModel;
myViewModel.options = obj;
var serializer = new JavaScriptSerializer();
myViewModel.JsonData = serializer.Serialize(data);
return PartialView(myViewModel);
}
}
И, наконец,view:
@model optionsViewModel
<script>
dosomething('@model.JsonData')
</script>
Используя этот метод, ваша функция будет работать, как и ожидалось:
function dosomething(obj)
{
if (obj.Url!="" and obj.HttpMethod=="something")
loadsomething();
}
EDIT 3 Возможно, самый простой способ?Те же предпосылки, что и в редактировании 2, однако здесь используется вид для JsonEncode модели.Вероятно, есть несколько хороших аргументов с обеих сторон, следует ли это делать на уровне представления, контроллера или хранилища / службы.Тем не менее, для выполнения преобразования в представлении ...
@model options
<script>
dosomething('@Html.Raw(Json.Encode(Model))');
</script>