0

javascript を使用してモデルをビューからコントローラーに渡そうとしています。しかし、それは null 値を返します。

ここに私の見解があります Newcamp.chstml

 <input type="submit" value="Preview" id="ClickMe" class="cssLoginButton blue"/>

<script type="text/javascript">
 function OpenWindow(query, w, h, scroll) {
     var l = (screen.width - w) / 2;
     var t = (screen.height - h) / 2;

     winprops = 'resizable=0, height=' + h + ',width=' + w + ',top=' + t + ',left=' + l + 'w';
     if (scroll) winprops += ',scrollbars=1';
     var f = window.open(query, "_blank", winprops);
 }


 $(function () {
     $('#ClickMe').click(function () {
             OpenWindow('@Url.Action("NewCampEmail", "Camp",new{model = @Model})', 700, 700, true);
     });
 });
</script>

私のコントローラーアクションNewCampEmail

    [HttpGet]
    [OutputCache(Location = OutputCacheLocation.None)]
    [Authorize]
    public ActionResult NewCampEmail(Models.NewCamp model)
    {            
        return ReturnModelWithEmailType(model,EmailType.NewCampEmail);
    }

モデルでは、null 値を取得します。null 値が取得されるのはなぜですか? コードに変更はありますか? 私のモデルはNewCamp.chstml 、つまり Models.Newcampで同じです

4

1 に答える 1

0

この方法では、JavaScriptを介して@Modelを渡すことはできません。モデルはサーバー側にのみ存在し、http応答がモデルを送り返す前にページの作成に使用されます。もちろん、モデルから「値」を取得し、それらを定数としてコントローラーに送信することはできますが、この方法で実際のモデル自体を参照する方法はありません。

ページ上のプロパティなどではなく、単一のを参照する場合は、knockoutjs (関係なく優れた演習)などを確認することをお勧めします。Model

簡単に言うと、ページがレンダリングされると、@ Modelはなくなり、ページのプロパティまたは@Modelによって入力されたjavascriptオブジェクトを介してのみ参照できます...

于 2013-01-11T10:24:47.593 に答える