Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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 如何实现不改变页面的表单按钮_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 如何实现不改变页面的表单按钮

Asp.net mvc 如何实现不改变页面的表单按钮,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我有一个具有以下代码的视图: @using (Html.BeginForm("GenerateQrCode", "QrCodeGenerator", FormMethod.Post )) { <input type="submit" value="Generate" /> } 控制器中的方法是否可以从窗体返回值,但不转到其他页面?因为我注意到,当前,在按下表单按钮时,它试图导航到一个不存在的与控制器方法同名的“GenerateQrCode”页面 更新: 我尝试过让控制器方法

我有一个具有以下代码的视图:

@using (Html.BeginForm("GenerateQrCode", "QrCodeGenerator", FormMethod.Post ))
{
    <input type="submit" value="Generate" />
}
控制器中的方法是否可以从窗体返回值,但不转到其他页面?因为我注意到,当前,在按下表单按钮时,它试图导航到一个不存在的与控制器方法同名的“GenerateQrCode”页面

更新:

我尝试过让控制器方法返回一个ActionResult,并返回一个“RedirectToAction”,然后简单地调用相同的视图。然而,我在这个方法中也有代码'ViewBag.Message=myMessage;然后在我的视图中,我有代码'@ViewBag.Message',所以我希望视图会用ViewBag Message属性更新,但看起来不是这样

您正在使用的Html.BeginForm版本告诉提交按钮发布到GenerateQrCode操作。也许您可以尝试使用更适合您的目的的Html.BeginForm?

使用javascript: 处理单击事件。 在处理程序中,阻止默认操作并停止事件传播。 使用表单数据向服务器发出和AJAX调用。
获取响应并采取进一步的行动。

因此,如果我有此权利,您希望提交一个行动,而不实际考虑服务器的响应。听起来您需要jQuery帖子:

这就是你所需要的。这将发布数据。您可以通过按钮单击事件而不是表单提交按钮来调用它。或者,您可以覆盖表单上的提交事件,并将其作为第一行代码:

e.preventDefault();

其中e是事件参数。这将防止发生默认操作,在本例中,默认操作是提交表单和加载响应。

最简单的方法是使用RedirectToAction方法,在参数中指定控制器的名称。我还使用TempData变量将结果(在本例中为字符串值)传递回视图,并传递到ViewBag变量中

    public ActionResult QrCodeGenerator()
    {
        ViewBag.Message = TempData["Message"];
        return View();
    }

    public ActionResult GenerateQrCode()
    {
        TempData["Message"] = "myMessage";
        return RedirectToAction("QrCodeGenerator");
    }

我应该把这个JavaScript放在哪里?在.cshtml文件中?它与我当前的表单代码在哪里匹配?将它放在标记中.cshtml的末尾,或者放在一个单独的JS文件中,该文件链接到使用中。你最终解决了这个问题吗?是的,我提交了一个答案。
e.preventDefault();
    public ActionResult QrCodeGenerator()
    {
        ViewBag.Message = TempData["Message"];
        return View();
    }

    public ActionResult GenerateQrCode()
    {
        TempData["Message"] = "myMessage";
        return RedirectToAction("QrCodeGenerator");
    }