MVC3下拉列表来呈现局部视图和持久数据(mvc3 dropdownlist to render p

2019-10-17 06:16发布

我想有呈现一个MVC下拉列表页和渲染的局部视图,只要在下拉列表的值更改。 直到我在局部视图点击按钮来坚持在局部视图所做的更改它的工作好了。

我有我的部分观点如下代码 -

<script type="text/javascript">
    $(function () {
        $("#sortable, #sortable2").sortable({
            connectWith:  ".connectedSortable"
        }).disableSelection();        
    });

    $(function () {
        $("button").button();
        $(".submit").click(function () {
            var list = "somedata";
            var companyid = $("#myid").text();            
            $.ajax({
                url: "/Controller/Action",
                data: {
                    'values': list,
                    'id': myid
                }
            });
        });
    });

</script>

......

<div class="submit">
    <button>Submit</button>
</div>

这里是我的主视图代码 -

<script type="text/javascript">
    function processList() {
        var myid = $("#ddList").val();
        $.ajax({
            url: 'Controller/Action/',
            data: {
                'id': myid 
            },
            datatype: 'html',
            success: function (result) { success(result); }            
        });
    }

    function success(result) {
        $("#partial").html(result);
    }
</script>

@using (Html.BeginForm("Action", "Controller"))
{      
    @Html.DropDownListFor(x => x.SelectedValue, Model.MyEntity, new { @id = "ddList", onchange = "processList();" })


<div id="partial" style="height:  90%">

        @Html.Partial("_MyPartialView")

</div>
}

从我的控制器代码如下 -

public ActionResult Action(int? id)
        {                        
            id = id ?? 1;    

            var vm = new MyViewModel
            {
                .....
            };
            return PartialView("_MyPartialView", vm);
        }

        public ActionResult PersistActivities(int myid, string values)
        {
            int result = _service.UpdateActivityOrderByCompany(companyid, values);                         
            return new EmptyResult();            
        }

我想,当我点击按钮坚持的页面重新渲染只是局部视图。 即使它只是没有做任何事情,这将是罚款。 什么是实际发生的是,控制器再次进入“动作”的动作,然后抛出渲染错误。 如果我继续通过jQuery的错误,只是局部视图数据在整个窗口中呈现。

任何人都可以指出哪里我的问题与渲染器/控制器电话?

我希望这是足够的信息。 我不得不裁减的代码,但如果需要的话可以提供更多。

感谢您的任何想法。

EDTI -

我得到的错误是在渲染的排序列表的第一个函数的局部视图 -

微软JScript运行时错误:预期的对象

希望帮助

Answer 1:

有一些事情,可能是发生了什么事的原因。

您的网址可能不正确。

url: 'Controller/Action/',

应该:

url: '@Url.Action("Action", "Controller")', 

您的按钮提交的代码指的是你的Action在你的Controller ,但你可能希望它去你PersistActivities 。 此外,您的控制器动作期待变量myidvalues ,但是你发送id和值instead 。 你也提到一个HTML元素身份识别码,但它这里没有显示,我假设你离开它的简洁。 目前也没有一个成功的功能 - 你有什么打算该按钮真正做到?

你可能需要的是这样的:

 $(".submit").click(function () {
     var list = "somedata";
     var myid = 1;
     alert(myid);
     $.ajax({
        url: '@Url.Action("PersistActivities", "Home")',
        data: {
           'values': list,
           'myid': myid
        }            
     });
  });

最后,你的按钮被张贴在网页的原因是它的提交表单。 你应该改变你的按钮的类型为类型的按钮,如果你不希望它实际上是提交表单。

<button type="button">Submit</button>


文章来源: mvc3 dropdownlist to render partial view and persist data