短い答えは「いいえ」です。
ビューの横に生データモデルを戻す必要がある場合は、唯一の方法はビューにデータを埋め込むことです。二つのオプションがある:
HTML要素(厄介IMOの一種)において、スクリプトで
<div id="myData" data-model="{"Name": "Jason"}"></div>
:
<script>
var myData = {Name: Jason};
</script>
ないHTMLエスケープがないので、私は第二の方法を好みます。
私はこれをやらなければならないのは辛いことですが、1つのリクエストは1つのリクエストです...それはただ1つのデータストリームです。この方法でのデータのブートストラップはかなり一般的です。したがって、将来のバージョンのMVCでは、より洗練された方法で返すことができます(ただし、上記の例のように見えるでしょう)。
これ以外にも、前述のとおり、JSONレスポンスでモデルを受け取るように余分なリクエストを行うことができます。
編集:私はこれを支援するために私の袖をの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>
そこに他の2つのオプションのチェック[this](https://forums.asp.net/t/2036219.aspx?How+to+pass+model+data+to+javascript+file+)と[this](https:// blog.mariusschulz.com/2014/02/05/passing-net-server-side-data-to-javascript)に投稿してください。希望は誰かを助ける。 – stom