如何使用ajax重定向查看?

时间:2017-02-18 12:23:22

标签: c# ajax asp.net-mvc

我使用asp.net mvc5。我在网站的右侧面板(布局)创建一个菜单。当用户点击菜单项时,加载页面没有刷新页面。为了做到这一点,我使用Ajax.ActionLink

<aside class="right-panel flexcol">
<button class="accordion">Hotels</button>
    <div class="sub-panel flexcol">
@Ajax.ActionLink("View Hotels", "Index", "Hotel", null, new AjaxOptions { HttpMethod = "get", UpdateTargetId = "pageContent" }, new { @class = "sub-menu" })
@Ajax.ActionLink("HotelType", "Index", "HotelType", null, new AjaxOptions { HttpMethod = "get", UpdateTargetId = "pageContent" }, new { @class = "sub-menu" })

    </div>

并且对于呼叫'新酒店'页面,我使用

@Ajax.ActionLink("Create Hotel", "Create", "Hotel", null, new AjaxOptions { HttpMethod = "get", UpdateTargetId = "pageContent" }, new { @class = "bluelink" })

这些工作正常。 问题:当我提交创建页面时,此页面发送到控制器,如果模型填写无效数据,页面重定向到没有布局和css的创建页面。

@model ... Models.Hotel
@{
ViewBag.Title = "Create";
Layout =null;
}

控制器

public ActionResult Create()
    {
        return PartialView();
    }


    [HttpPost]
    public ActionResult Create(Hotel model)
    {
        if (!ModelState.IsValid)
        {
            return PartialView(model);
        }
        ApplyToDataBase(model, "uspInsertHotel");
        return RedirectToAction("Index");
    }

enter image description here

1 个答案:

答案 0 :(得分:1)

在我看来,问题在于,在模型无效的情况下返回局部视图,这不是ajax调用。我可以提出几种选择,希望他们能提供帮助。

首先,您可以返回不是局部视图,而是返回该情况下的整个视图。它可能不是一个非常优雅的解决方案,它可能会导致视图重复。

另一种方法 - 使用客户端验证,因此您无需进行服务器调用即可验证输入。在这种情况下,您可能需要使用jQuery验证插件。