gpt4 book ai didi

c# - 将 Javascript 变量传递给 MVC3 中的路由值

转载 作者:太空狗 更新时间:2023-10-29 22:27:10 25 4
gpt4 key购买 nike

我想在 @Url.Action 方法中传递一个 javascript 变量作为路由参数。

我喜欢将 screenmode javascript 变量作为路由参数传递给我的操作方法。

I have a view model with ScreenMode enum property and based on it i should call a action in Ajax. I also need to pass a javascript variable as a parameter for route.

这是我尝试过的,但出现了编译错误。

名称“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)
{
}

最佳答案

您必须将其拆分并自行构建查询字符串,以便合并 Javascript 变量。

你需要这样的东西:

$.post('@(Url.Action("SaveRoleDetail"))?screenMode=' + screenMode)

编辑:尽管可能是最佳实践,但您应该将 ScreenMode 变量存储在您的模型中,然后在您的 View 中为它放置一个 HiddenFor。然后,每当您更改 Javascript 中的值时,只需更新隐藏输入的值,这样您的操作方法只需要将 View 模型作为参数。如果您使用 JavaScript 发布表单,您可以调用 $("#form").serialize() 将所有数据发送回您的发布调用中。

关于c# - 将 Javascript 变量传递给 MVC3 中的路由值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14233361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com