【发布时间】:2019-01-03 13:51:14
【问题描述】:
项目环境:C#、MVC 5.0
来自Edit.cshtml的HTML代码:
@Html.EditorFor(model => model.ActiveClient.ClientName, new {
htmlAttributes = new { @onchange = "OnNameEdit(this.value)",
@class = "form-control" } })
来自 Edit.cshtml 的 jQuery / JavaScript:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
}
<script>
function OnNameEdit(val) {
window.location.href = "OnNameEdit?Value=" + val;
};
</script>
控制器中的操作代码:
[HttpGet]
public ActionResult OnNameEdit(String Value)
{
WFViewModel = (WorkflowVM)TempData["WFViewModel"];
if (Value != null)
{
WFViewModel.ActiveClient.ClientName = Value;
}
TempData["WFViewModel"] = WFViewModel;
return RedirectToAction("Edit", "Clients");
}
控制在同一个控制器中执行的操作:
// GET: Clients/Edit/5
public ActionResult Edit(int? id)
{
WFViewModel = (WorkflowVM)TempData.Peek("WFViewModel");
// Remaining code removed for brevity
视图加载正常。进入字段以修改 ClientName 的内容并修改内容。
当一个选项卡退出 ClientName 控件时,控制流向脚本部分中的 OnNameEdit() 函数
Edit.cshtml 文件。当该函数完成时,控制转移到名为 Edit() 的操作,而不是
在同一个控制器中名为 OnNameEdit() 的操作。
此代码与同一控制器的 Create 视图的代码基本相同,并且可以完美运行
任何建议将不胜感激。
【问题讨论】:
-
这是因为您使用了 RedirectToAction("Edit")。尝试返回 View();
-
感谢@apomene 的建议,但关键是从一开始就没有达到 Action OnNameEdit。
标签: javascript jquery asp.net-mvc model-view-controller