我想在@ Url.Action方法中传递一个javascript变量作为路由参数。传递Javascript变量在MVC3路由值
我喜欢将screenmode javascript变量作为路由参数传递给我的操作方法。
我有一个ScreenMode枚举属性的视图模型,并基于它我应该在Ajax中调用一个动作。我还需要传递一个javascript 变量作为路由参数。
这是我试过,并得到编译错误。
“screenMode”这个名字不会在目前情况下存在
$("#role-detail-form").submit(function (e) {
if ($(this).valid()) {
var screenMode = 0;
@{
if (Model.ScreenMode == UI.ViewModel.ScreenMode.New)
{
<text>
screenMode =2;
</text>
}
}
$.post('@Url.Action("SaveRoleDetail", new { mode=screenMode})',
$(this).serialize(), function (data) {
$("#role-detail").html(data);
$.validator.unobtrusive.parse($("#role-detail"));
});
}
e.preventDefault();
});
我的行为是
public ActionResult SaveRoleDetail(RoleModel viewModel, ScreenMode screenMode)
{
}
我可以在post ajax方法中传递这个查询字符串吗? url的外观如何? screenMode会成为发布参数或查询字符串的一部分? –
更好的是,您可以将ScreenMode放入您的模型中,在视图中放置一个hiddenFor,然后如果您想要在Javascript中更改它的值,则只需更新隐藏输入的值,然后完成后, $(“#form”)。serialize();这样你的动作方法只需要视图模型作为参数:) – mattytommo
是的,你是正确的。我现在使用隐藏字段并使用Javascript进行更新。你可以请添加这个隐藏的字段信息作为你的答案的一部分。所以它会很容易看到,对其他人也有帮助:) –