Passing model data to external javascript

Is there a way to pass model data to external javascript without having hidden variables in my view. I use a Google map to display pushpins, and the map is loaded via javascript, and at the same time I have a (large) list of latitude, longitude data as part of the model data that is retrieved during my request. I do not want to have a long list of hidden variables in my html, and also reduce another call to ajax server to get the required information (lat / lon) in my javascript. Is there any way to do this efficiently?

Thank.

+3
source share
1 answer

The short answer is no.

, . :

HTML- ( IMO):

<div id="myData" data-model="{&quot;Name&quot;: &quot;Jason&quot;}"></div>

script:

<script>
  var myData = {Name: Jason};
</script>

, HTML- .

, , , - ... . , , , MVC ( , , ).

, , , JSON.

EDIT:

HtmlHelper , ...

public static MvcHtmlString ToScriptVariable<T, TMember>(this T value, Expression<Func<T, TMember>> expression) where T : class 
{
    var member = expression.Body as MemberExpression;
    if (member == null)
        throw new ArgumentException("Expression must be a member expression.", "expression");

    var expressionValue = expression.Compile()(value);
    var serializer = new JavaScriptSerializer();
    var seralizedData = serializer.Serialize(expressionValue);

    var tag = new TagBuilder("script");
    tag.Attributes.Add("type", "text/javascript");
    tag.InnerHtml = String.Format(CultureInfo.InvariantCulture, "var {0} = {1};", member.Member.Name, seralizedData);

    return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
}

:

<%: Html.ToScriptVariable(x => Model.MyData) %>

:

<script type="text/javascript">var MyData = "(whatever)"</script>
0

Source: https://habr.com/ru/post/1779947/


All Articles