0

我正在尝试使用 javascript 将模型从视图传递到控制器。但它返回空值。

这是我的看法 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);
    }

模型中,我得到空值。为什么我得到空值?我的代码有什么变化吗?我的模型在NewCamp.chstml中是相同的,即 Models.Newcamp

4

1 回答 1

0

您不能以这种方式通过 javascript 传递 @Model。该模型仅存在于服务器端,并在 http 响应发回之前用于页面创建。您当然可以从模型中获取“值”并将它们作为内容发送到控制器,但是无法以这种方式引用实际的模型本身。

如果您想引用单个,而不是页面上的属性等,最好的选择是查看knockoutjs (无论是一个很好的练习)或类似的东西。Model

简而言之,一旦页面被渲染,@Model 就消失了,只能通过页面属性或由@Model 填充的 javascript 对象来引用...

于 2013-01-11T10:24:47.593 回答