首页 > 代码库 > MVC4下如何实现模态弹出对话框效果--对话框里可以实现翻页效果(1)

MVC4下如何实现模态弹出对话框效果--对话框里可以实现翻页效果(1)

需求:MVC4下我想实现弹出对话框的效果,是模态的效果。在弹出对话框里不仅仅实现填充编辑框的效果。而是分页效果。这个功能我差不多花了一个星期的时间。其实我没有CSHARP开发过代码,而且对最新的技术都不了解了。因为没有基础的知识点支撑,没有好好的处理基础知识,所以绕了这么大的圈子。

 

    英文水平有限,翻译可能不准确。非常好的一篇文章,支撑我的项目:http://www.codeproject.com/Articles/565513/How-to-series-about-MVC-jQuery-JSON-paging-mapRout《"How to series" about MVC, jQuery, JSON, paging, mapRoute》---当然这篇文章并没有实现在对话框下分页功能,但是里面丰富的知识点足以举一反三。

 

    介绍:因为系统大量的数据,客户端工作非常重要,在ASP.NET典型的后置代码下,很自然的方法将很多的工作用ASP.NET组件放在后置代码中,然而,通过ASP.NET组件和可视降低性能。通过MVC可以知道以前的设计结果模式。在ASP.NET之前很流行。高执行性能。JQUERY和JSON。

 

     背景:在想读懂或实现这些功能,需要了解的知识点:

 

       

 

  • MVC for beginners : http://www.w3schools.com/aspnet/mvc_intro.asp
  • jQuery for beginners : http://www.w3schools.com/jquery/default.asp
  • jSon for beginners : http://www.w3schools.com/json/default.asp

 

那篇文章提出知识点和实现效果,我这里就不赘述了。我原来实现的思路是想用 UPDATAPENL+AJAXTOOLKIT来实现的。确实我在ASP普通网站实现了弹出对话框分页的可能,而MVC下完全没有实现,所有的动作被控制器收了。就是不更新。

 

学习了jquery+AJAX,很快爱上了。不知道为什么,国内国外网站上面对弹出的对话框分页效果实现都没有案例,难道不需要,还是太简单的。对于我这个跳跃的学习的人来讲,完全没有必要。我不能理解。

 

别人的代码拿过来我们也是不说可以直接用的:

 

自己手动创建MVC4项目,我们需要如何移植代码呢?

 

1、MVC4里的_LAYOUT页面里,需要加入保证我们运行的JS。需要把别人的JS拷贝响应目录下

 

jquery-1.5.1.min.js

 

jquery-ui-1.8.11.min.js

 

 

 

moderizr-1.7.min.js

 

jquery.unobtrusive-ajax.js

 

jquery.validate.min.js

 

myjs.js

 

jquery.validate.unobtrusive.min.js

 

2、VIEW里找到需要增加弹出窗口的页面,可以选择HOME控制器里面Index页面,增加如下代码:

 

@Html.ActionLink("New","New",new{DataModuleId=0},new{@class="newLink"})

 

这个是弹出对话框的代码。

 

New:代表链接的文字。

 

New:控制器的动作。(我们的就在HOME的控制器里加一个就可以了)

 

DataModuleId:因为我做的是新建和编辑功能,他们可以共用一个窗体。所以我们用它传递0和1,0就是新建,1是编辑。

 

newlink:是下文JQUERY使用的类名。

 

 

 3、下面我们增加JQuery代码,在Index里面加。可能新学的同学不知道在哪里加加什么,就需要了解MVC的相关知识。

 <div id="saveDialog" title="Person Information"></div>

<script type="text/javascript">

    var linkObj;

    //.....

    $(document).ready(function () {

       //...

        $(#saveDialog‘).dialog({
            autoOpen: false,
            width: 400,
            resizable: false,
            modal: true,
            buttons: {
                "Save": function () {
                    $("#update-message").html(‘);
                    $("#savePersonForm").submit();
                },
                "Cancel": function () {
                    $(this).dialog("close");
                }
            }
        });


       //....

       setLinks();

    });

    // ....
 
    function setLinks()
    {

        $(".editLink, .newLink, uploadPicLink").unbind(click‘);

        $(".editLink, .newLink").click
        (
            function ()
            {
                linkObj = $(this);
                var dialogDiv = $(#saveDialog‘);
                var viewUrl = linkObj.attr(href‘);
                $.get(viewUrl, function (data)
                {
                    dialogDiv.html(data);
                    //validation
                    var $form = $("#savePersonForm");
                    $form.unbind();
                    $form.data("validator", null);
                    $.validator.unobtrusive.parse(document);
                    $form.validate($form.data("unobtrusiveValidation").options);

                    dialogDiv.dialog(open‘);
                });

                return false;

            }
        );

        //...


    } //end setLinks
</script>

4、创建控制器,控制器当然也是Home,在HOME里增加New动作。-这里的模型不一定是你要的模型

[HttpGet]
public ActionResult New(int personNo)
{
           
  Person person= new Person();
  person.BirthDate = DateTime.Today;
  person.PersonNo = 0;
           
  if (personNo > 0)
  {
     person = Repository.GetPersonList().Where(c => c.PersonNo == personNo).FirstOrDefault();
  }

  return PartialView(person);

}
 到这里可以实现了弹出对话框了。代码是加了,可是很多人会调不通,因为不懂基础原理。JQUERT有一点不对,都有可能调不通。

但是对话框里的数据要如何处理保存,如何变化。需要下一篇文章来表达。