[英]How to pass dynamic values using MVC AJax.BeginForm
我正在使用MVC和AJax.BeginForm对页面进行Ajax更新。 BeginForm代码类似于:
using (Ajax.BeginForm("HandleCrop", "Card",
new
{
accept = true,
id = Model.ImageUpload.ID,
file = Model.ImageUpload.File,
imageCropX = Model.CropInfo.X,
imageCropY = Model.CropInfo.Y,
imageCropWidth = Model.CropInfo.Width,
imageCropHeight = Model.CropInfo.Height
},
new AjaxOptions
{
HttpMethod = "POST",
OnComplete = "ConfirmCompleted",
OnSuccess = "ReloadUpload",
OnFailure = "Failure"
}, null))
将Model.CropInfo作为隐藏字段放入,如下所示:
<%=Html.HiddenFor(m => m.CropInfo.X) %>
<%=Html.HiddenFor(m => m.CropInfo.Y) %>
<%=Html.HiddenFor(m => m.CropInfo.Width) %>
<%=Html.HiddenFor(m => m.CropInfo.Height) %>
但是,某些客户端javascript正在动态修改这些值,并且需要通过Ajax调用将这些值发布回服务器。 上面的代码显然不会在渲染页面时填充Ajax表单中的imageCrop ..参数(因此全为0)。
我的问题是:解决这种情况的正确方法是什么?
从Ajax中应该绝对删除此部分:
imageCropX = Model.CropInfo.X,
imageCropY = Model.CropInfo.Y,
imageCropWidth = Model.CropInfo.Width,
imageCropHeight = Model.CropInfo.Height
随着TryUpdateModel
在Action
你CropInfo
应填写从发布的数据确定。
如果您不使用模型的自动更新(或通过TryUpdateModel
),而不是使用此数据作为Action
输入参数,则只需将这些Action
参数重命名为CropInfo_X
, CropInfo_Y
, CropInfo_Width
和CropInfo_Height
(我认为这是隐藏的字段将以HTML命名,请在页面源代码中进行检查)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.