Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 5 编辑模型-有没有更好的方法?_Asp.net Mvc 5 - Fatal编程技术网

Asp.net mvc 5 编辑模型-有没有更好的方法?

Asp.net mvc 5 编辑模型-有没有更好的方法?,asp.net-mvc-5,Asp.net Mvc 5,我的表格上有一个WebGrid,其中一列有ActionLink: Html.ActionLink((string)item.Name, "Edit", new { id = item.Id }) 下面代码的目的是将编辑屏幕显示为模式弹出窗口,并成功发布更新对象 控制器-获取: public ActionResult Edit(int id) { ... //Fetch employeeViewModel @id TempData["StateData"] = employeeV

我的表格上有一个WebGrid,其中一列有ActionLink:

Html.ActionLink((string)item.Name, "Edit", new { id = item.Id })
下面代码的目的是将编辑屏幕显示为模式弹出窗口,并成功发布更新对象

控制器-获取:

public ActionResult Edit(int id)
{
    ... //Fetch employeeViewModel @id
    TempData["StateData"] = employeeViewModel ;
    TempData["ViewState"] = "Edit";

    return RedirectToAction("Index");
}
Index.cshtml:

@if (TempData.ContainsKey("ViewState") && TempData["ViewState"].ToString() == "Edit")
{
    EmployeeViewModel employeeViewModel = (employeeViewModel)TempData["StateData"];
    @Html.Partial("_EditEmployee", employeeViewModel)

    <script language="javascript">
        $(window).load(function() {
            $('#editEmployeeModal').modal('show');
        });
    </script>
}
有谁能提供更好的指导方法吗


谢谢大家!

只是一个通用指针:您不需要转到服务器就可以在浏览器中弹出一个模式对话框。仅在javascript中就可以很好地做到这一点。一些常见的javascript库已经有了模式弹出窗口,您可以使用/自定义/借用等来满足您的需要。只需谷歌javascript弹出表单即可获取大量信息

下面代码的目的是将编辑屏幕显示为模式弹出窗口,并成功发布更新对象

在直接回答你的问题之前,我想先谈谈这个问题。您需要确保模态是正确的选择。你需要保留什么状态吗?模态是否能提供更好的用户体验?该模式是否跨平台工作,是否使用较旧的技术

使用情态动词几乎总是比简单地重定向到另一个页面然后返回更复杂。根据用户体验权衡额外的复杂性。如果它不合理,那么就放弃它。同时想想你最终可能遇到的奇怪情况。当您的模式需要打开另一个模式时会发生什么

现在真正的问题是…如何让它工作。简而言之,使用AJAX

@Html.ActionLink((string)item.Name, "Edit", new { id = item.Id })
把这个打开。模态包含一个AJAX表单元素AJAX.BeginForm,并将其发布到编辑操作中


现在没有重定向。操作完成后,通过Ajax表单的AjaxOptions执行javascript函数设置,该选项关闭模式或显示验证。用户在整个过程中都不会离开页面。

谢谢Steve,但我的代码不是使用js加载模式弹出窗口-$'editEmployeeModal'。模式显示';我只是想知道如何从控制器编辑操作返回,这样我就不必调用-return-RedirectToActionIndex;
return RedirectToAction("Index");
@Html.ActionLink((string)item.Name, "Edit", new { id = item.Id })