繁体   English   中英

如何使用MVC AJax.BeginForm传递动态值

[英]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  

随着TryUpdateModelActionCropInfo应填写从发布的数据确定。

如果您不使用模型的自动更新(或通过TryUpdateModel ),而不是使用此数据作为Action输入参数,则只需将这些Action参数重命名为CropInfo_XCropInfo_YCropInfo_WidthCropInfo_Height (我认为这是隐藏的字段将以HTML命名,请在页面源代码中进行检查)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM