La réponse courte est "non".
Si vous devez renvoyer un modèle de données brutes à côté de votre vue, la seule option consiste à incorporer les données dans la vue. Les deux options sont:
Dans un élément HTML (type de l'OMI maladroite):
<div id="myData" data-model="{"Name": "Jason"}"></div>
dans le script:
<script>
var myData = {Name: Jason};
</script>
Je préfère la deuxième méthode car il n'y a pas de HTML échapper. Je suis d'accord que c'est un peu ennuyeux d'avoir à faire cela, mais une demande est une demande ... c'est juste un flux de données. Bootstrap de données de cette façon est assez commun, alors peut-être une version future de MVC aura un moyen plus propre de le retourner (mais il ressemblerait probablement à l'un de mes exemples ci-dessus). En dehors de cela, comme vous l'avez mentionné, vous pouvez faire une requête supplémentaire pour recevoir uniquement le modèle dans une réponse JSON.
EDIT:
J'ai eu un HtmlHelper ma manche pour aider à cette ...
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));
}
Utilisation:
<%: Html.ToScriptVariable(x => Model.MyData) %>
Résultat:
<script type="text/javascript">var MyData = "(whatever)"</script>
Il y a un re deux autres option cocher [this] (https://forums.asp.net/t/2036219.aspx?How+to+pass+model+data+to+javascript+file+) et [this] (https: // blog.mariusschulz.com/2014/02/05/passing-net-server-side-data-to-javascript). J'espère aider quelqu'un. – stom