我正在尝试使用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
答案 0 :(得分:0)
你不能以这种方式通过javascript传递@Model。模型仅存在于服务器端,用于在发送它的http响应之前创建页面。你当然可以从模型中获取“值”并将它们作为包含物发送给控制器,但是没有办法以这种方式引用实际的模型本身。
如果您想引用单个Model
而不是页面上的属性等,那么您最好的选择是查看knockoutjs(一个无关紧要的好运动)或类似内容。
简而言之,一旦页面被渲染,@模型就消失了,只能通过页面属性或@Model填充的javascript对象来引用...