gpt4 book ai didi

c# - 发布后重新加载当前 View

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:10 27 4
gpt4 key购买 nike

我有下面的方法,它在点击保存时被调用。

 [HttpPost]
public virtual JsonResult Save(MyViewModel myViewModel)
{
if (ModelState.IsValid)
{
MyProcessManager.Save(myViewModel.prop1,myViewModel.prop2, myViewModel.prop3);
}else
{
HttpContext.Response.StatusCode = 500;
HttpContext.Response.Clear();
}
return Json(ModelState.SerializeErrors());
}

保存是使用 - Ajax.BeginForm("MyActionName", "MyViewName", HttpVerbs.Put, null). View 是强类型的。现在,在成功保存后,我想再次绑定(bind) View 模型,以便更新一些隐藏字段值。以下是加载 View 的默认方法。

 public virtual ActionResult GetMyConfiguration(int myId)
{
var myViewModel = getMyViewModel(myId)
return View("MyViewName", myViewModel);
}

我怎样才能做到这一点?请提出建议。

最佳答案

我建议您可以将 OnComlete ajax javascript 处理程序方法添加到您的 Ajax.BeginForm() 帮助器中,在成功后返回序列化的 jsom 模型 MyProcessManager.Save() ,并在您的 OnComplete javascript 方法解析 ($.parseJSON) 模型中,由 Controller 返回,并更新隐藏字段的值。如下所示:

查看:

Ajax.BeginForm("MyActionName", "MyViewName", null,new AjaxOptions
{
HttpMethod = "Post",
InsertionMode = InsertionMode.InsertAfter,
OnComplete = "complete",
UpdateTargetId = "update-target"
} ){}

<script type="text/javascript">
function complete(data)
{
// parse model
var result = $.parseJSON(data.responseText);

// update hidden value
$('#myhidden').val(result.prop1)
}
</script>

Controller :

[HttpPost]   
public virtual JsonResult Save(MyViewModel myViewModel)
{
if (ModelState.IsValid)
{
MyProcessManager.Save(myViewModel.prop1,myViewModel.prop2, myViewModel.prop3);
return Json(myViewModel);
}else
{
HttpContext.Response.StatusCode = 500;
HttpContext.Response.Clear();
}
return Json(ModelState.SerializeErrors());
}

关于c# - 发布后重新加载当前 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786920/

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