当前位置: 首页 > 知识库问答 >
问题:

MVC 4 Ajax和jQuery在表单post后的滑动切换

孙泉
2023-03-14

我对MVC4和Ajax有几个问题。

我的观点很基本:

<div id="sName">
    @Html.Partial("PartialName", Model)
</div>
<script type="text/javascript">
    $(function () {
        $("select").selectpicker({ style: 'btn', menuStyle: 'dropdown' }); // I use a Bootstrap mod
    });
</script>

以下是我的部分观点:

@using (Ajax.BeginForm("UpdateProfile", "Account", new { form = "name" }, new AjaxOptions { UpdateTargetId = "sName", OnSuccess = "NameUpdated", HttpMethod = "POST" }))
{
    <span>Name</span>
    <div id="field-name">
        <a id="edit-name" href="#" title="Click here to update your name">@Model.User.Firstname @Model.User.Middlename @Model.User.Surname</a>
    </div>
    <div id="field-edit-name" style="display: none;">
        <input type="text" name="firstname" value="@Model.User.Firstname" />
        <input type="text" name="middlename" value="@Model.User.Middlename" /></div>
        <input type="text" name="surname" value="@Model.User.Surname" />
        <button>Save</button>
        <button id="cancel-name">Cancel</button>
    </div>
    <script type="text/javascript">
        $(function () {
            $("select").selectpicker({ style: 'btn', menuStyle: 'dropdown' });
            $("#edit-name, #cancel-name").on('click', function (e) {
                e.preventDefault();
                $("#field-edit-name").slideToggle(450);
                $("#field-name").slideToggle(450);
            })
        function NameUpdated() {
            $("#field-edit-name").slideToggle(450);
            $("#field-name").slideToggle(450);
        }
    </script>
}

这是我的帐户控制器:

public ActionResult Index()
{
    MyModel Model = new MyModel();
    return View(Model);
}

[HttpPost]
public ActionResult UpdateProfile(string form, FormCollection c)
{
    switch (form)
    {
        case "name":
            // Update name and Model
            return PartialView("PartialName", Model);
        case "email":
            // Update email and Model
            return PartialView("PartialEmail", Model);
        case "address":
            // Update address and Model
            return PartialView("PartialAddress", Model);
        default :
            break;
    }
    return View();
}

第一个问题是:我将JQuery函数称为“$(”select“).SelectPicker({style:'btn',MenuStyle:'dropdown'});”在视图中,因为我将使用许多Bootstrap选择(都在不同的部分视图中),并且将其仅放在一个地方是有意义的。但是,我发现在上面部分视图中的Ajax回发之后,引导样式丢失了,并且select元素恢复到标准的浏览器选择。为了避开这件事我

$(function () {
    $("select").selectpicker({ style: 'btn', menuStyle: 'dropdown' });

在局部视图中也是如此。这并不理想,那么有没有更好的方法在Ajax回发后保持selects样式为Bootstrap而不必重复代码呢?

第二个问题是:当用户单击id=“edit-name”的链接时,id=“field-name”的div滑出,表单字段(id=“field-edit-name”的div内部)滑入。这个很管用。但是,当单击save按钮时,我希望表单字段滑回,链接滑回。我以为Ajax选项onsuccess=“nameupdated”可以做到这一点,但Ajax回发似乎正在刷新部分视图(使字段突然消失,链接重新出现,就好像页面被刷新了一样)。我知道Ajax正在正常工作,因为页面上的滚动位置没有丢失。我做错了什么?

我在布局页面中引用了以下JS文件:

<script src="/common/js/jquery-1.8.3.min.js"></script>
<script src="/common/js/jquery.ui.touch-punch.min.js"></script>
<script src="/common/js/bootstrap.min.js"></script>
<script src="/common/js/bootstrap-select.js"></script>
<script src="/common/js/bootstrap-switch.js"></script>
<script src="/common/js/jquery.tagsinput.js"></script>
<script src="/common/js/jquery.placeholder.js"></script>
<script src="/common/js/bootstrap-typeahead.js"></script>
<script src="/common/js/jquery.stacktable.js"></script>
<script src="/common/js/jquery.unobtrusive-ajax.min.js"></script>

多谢了。

共有1个答案

隆飞驰
2023-03-14

对于第一个问题,您可以查看可能有自定义事件,该事件在加载部分视图时触发。

在视图中,您可以看到类似的内容

$("#sName").on("customevent",function(){ //apply style here etc.... });

在部分视图脚本中,您可以有如下内容

$("#sName").trigger("customevent");

对于第二个问题,我会建议重写表单的提交,这样您就可以完全控制所发生的事情。

$("#form").on("submit", function(event) {
event.preventDefault();
var url = $(this).attr("action");
        $.ajax({
            url: url,
            type: 'POST',
            data: $(this).serialize(),
            success: function(data) {
             //Successful post, do work.
            }
        });
}
 类似资料:
  • 主要内容:jQuery Mobile 滑动条控件,实例,实例,实例,实例,拨动开关,实例,实例,更多实例jQuery Mobile 滑动条控件 滑动条允许您从一个范围的数字中选择一个值: 如需创建滑动条,请使用 <input type="range">: 实例 <form method="post" action="demoform.php">   <label for="points">进度:</label>   < input type="range" name="points" id="p

  • jQuery Mobile 滑动条控件 滑动条允许您从一个范围的数字中选择一个值: 如需创建滑动条,请使用 <input type="range">: <form method="post" action="demoform.php">   <label for="points">进度:</label>   <input type="range" name="points" id="point

  • 本文向大家介绍jQuery实现菜单式图片滑动切换,包括了jQuery实现菜单式图片滑动切换的使用技巧和注意事项,需要的朋友参考一下 jQuery菜单式图片滑动切换是一款天猫官方网站的鼠标滑过图片切换导航菜单特效。 演示图: 以上就是本文的全部内容了,希望大家能够喜欢。

  • 本文向大家介绍JQuery实现简单的图片滑动切换特效,包括了JQuery实现简单的图片滑动切换特效的使用技巧和注意事项,需要的朋友参考一下 JQuery实现简单的图片滑动切换特效 jQuery图片从下往上滚动效果是一款jquery animate方法制作的图片从下往上滚动效果。 上演示图

  • 问题内容: 我所看到的和jQuery的。左右滑动的功能/方式如何? 问题答案: 您可以使用jQueryUI中的其他效果来执行此操作: 快速示例:

  • 本文向大家介绍jQuery实现带幻灯的tab滑动切换风格菜单代码,包括了jQuery实现带幻灯的tab滑动切换风格菜单代码的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery实现带幻灯的tab滑动切换风格菜单代码。分享给大家供大家参考。具体如下: 这是一款很不错的TAB滑动切换效果,jQuery带幻灯的tab滑动切换风格菜单导航条,点击上方的文字,下边就向左或向右滑动切换,动画效果