javascript - ASP.NET MVC 4 AJAX.BeginForm 和 PartialViews

标签 javascript asp.net ajax asp.net-mvc-4 partial-views

我正在考虑使用 AJAX.BeginForm 构建 SPA,但是当用户禁用 JavaScript 时我遇到了一个问题,而不是将他重定向到 _Layout.cshtml + PartialView.cshtml,而是将他重定向到 PartialView.cshtml。 .

有没有办法在其中包含 Layout 和 PartialView(如果启用了 JavaScript,它会在哪里)?

谢谢

编辑:

太棒了..谢谢..我设法让它工作,但我不确定它是最好的实现..

    [HttpPost]
    public ActionResult Index(Newsletter newsletter)
    {
        if (ModelState.IsValid)
        {
            db.Newsletters.Add(newsletter);
            db.SaveChanges();
            ViewData["message"] = "thanks for signing up to our newsletter!";
            if (Request.IsAjaxRequest())
            {
                return PartialView( "SimpleMessage" );
            }
        }
        return View();
    }

SimpleMessage.phtml 只是@ViewData["message"];

而我的 View.phtml 我有一个条件并检查是否设置了 ViewBag["message"] 。如果它已设置,则意味着它是一个回发并且不显示表单而是显示消息,否则它显示表单:

最佳答案

您可以检查是否通过 Ajax 调用了 Action,并返回不同类型的结果

public ActionResult MyAction()
{
    if(Request.IsAjaxRequest()) {
        // Html fragment
        return PartialView();
    }
    else {
        // Complete HTML page
        return View();
    }
}

如果是回发,您也可以传递模型或简单类型(int、string):

[HttpPost]
public ActionResult MyAction(Model model)
{
    if(Request.IsAjaxRequest()) {
        // Html fragment
        return PartialView(model);
    }
    else {
        // Complete HTML page
        return View(model);
    }
}

编辑:在您的具体情况中,我会这样做,但这只是我的偏好。

[HttpPost]
public ActionResult Index(Newsletter newsletter)
{
    if (ModelState.IsValid)
    {
        db.Newsletters.Add(newsletter);
        db.SaveChanges();
        if (Request.IsAjaxRequest())
            return PartialView("SimpleMessage");
        else
            return View("SimpleMessage")
    }
    if (Request.IsAjaxRequest())
        return PartialView(newsletter);
    else
        return View(newsletter);
}

关于javascript - ASP.NET MVC 4 AJAX.BeginForm 和 PartialViews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15393474/

相关文章:

javascript - 可在 xul 应用程序中使用的 mongodb 的纯 javascript 驱动程序

javascript - 发布到 Node/快速端点的 Ajax 问题

asp.net - 在 .NET 4.7.2 下使用 VB.NET 在 WebForms 中进行构造函数注入(inject)

jquery - AJAX 调用由服务器处理但不会呈现?

php - Ajax、PHP、Javascript 在组合框选择后从数据库中提取值

javascript - MVC Jquery文件上传Request.Files始终为空

javascript - KnockoutJS 将数组中的第一个元素绑定(bind)到 div

asp.net - 在 ASP.NET 中使用 <%= %> 或 <%# %> 与 runat=server

asp.net - Uri.OriginalString 在 IIS 8.5 中编码

javascript - Laravel 删除按钮不适用于 Ajax 调用