Javascript 在MVC5中更新局部视图

Javascript 在MVC5中更新局部视图,javascript,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-3,razor,Javascript,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 3,Razor,尝试加载应在MVC应用程序的“创建”视图上显示列表的局部视图时出错。该列表基于一个值,该值将来自下拉控件中的值列表 在创建视图上没有选择,因此列表为空,在用户在MVC创建视图中选择值后需要刷新 我按照公认的答案回答了这个问题,发现了错误: 但是我有一些关于所说内容的问题 有人说:“有一些方法可以做到这一点。例如,你可以使用jQuery:”他展示了Java查询 但他也展示了另一种方法,并说:“如果您在action UpdatePoints()中使用逻辑来更新点” 我得到以下错误 参数字典包含“S

尝试加载应在MVC应用程序的“创建”视图上显示列表的局部视图时出错。该列表基于一个值,该值将来自下拉控件中的值列表

在创建视图上没有选择,因此列表为空,在用户在MVC创建视图中选择值后需要刷新

我按照公认的答案回答了这个问题,发现了错误:

但是我有一些关于所说内容的问题

有人说:“有一些方法可以做到这一点。例如,你可以使用jQuery:”他展示了Java查询

但他也展示了另一种方法,并说:“如果您在action UpdatePoints()中使用逻辑来更新点”

我得到以下错误

参数字典包含“System.Controllers.RController”中方法“System.Web.Mvc.ActionResult UpdateList(Int32)”的不可为null类型“System.Int32”的参数“ID”的null条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。参数名称:参数

我不知道这个错误是什么意思

因此,在创建视图中:

        <div class="col-sm-6">

            <div class="form-horizontal" style="display:none" id="PVList">

                @{ Html.RenderAction("UpdateList");}

            </div>
        </div>
以及创建查看行李功能列表的功能:

private List<SQL_VIEW_LIST> Get_List(int ID)
        {

            return db.SQL_VIEW_LIST.Where(i => i.ID == ID).ToList();
        }
还有人知道这个字符串是什么意思吗?“PostActionTo_部分”


还有谁知道这意味着什么;我得到了视图包部分,但它是_Repository.Points;我不明白的部分。有人知道那里发生了什么吗?

我不明白你想干什么。但我会尽力回答

我不知道这个错误是什么意思

此错误意味着模型绑定器无法找到操作方法的参数“ID”

public ActionResult UpdateList(int ID)
因为您没有为此方法发送任何参数: 您可以尝试以下方法:

@{ Html.RenderAction("UpdateList", new {ID="value"});}
也可以在方法中设置默认值:

public ActionResult UpdateList(int ID=value)
或使“ID”为空:

public ActionResult UpdateList(int? ID)
还有人知道这个字符串是什么意思吗?“PostActionTo_部分”

这是您控制器中的“操作名称”

还有人知道这意味着什么吗= _知识库.要点


这意味着指定动态对象“VivBag.points”数据以将其传输到视图中

,以便在Matt的帮助下,您可以在创建视图中填充局部视图,该视图由使用视图的下拉列表中的更改值触发

这是我如何使我的代码工作的

首先是需要检查空数据的部分视图代码示例

_WidgetListPartial

 @if (@ViewBag.AList != null)
    {
    <table cellpadding="1" border="1">
    <tr>
        <th>
            Widget Name 
        </th>
     </tr>

@foreach (MvcProgramX.Models.LIST_FULL item in @ViewBag.AList)
   {
    <tr>
        <td>
            @item.WidgetName
        </td>        
    </tr>
   }

   </table>
  }
如果需要,我不是100%,但我将以下内容添加到ActionResult中,创建表单Id和表单集合,以便

从下拉列表中读取值。同样,Ajax的东西可能会注意到,如果需要,但只是以防万一,应用程序似乎正在使用

这在[HttpPost]中

   public ActionResult Create(int RES_VID, FormCollection Collection, [Bind(Include = "... other form fields
这也在[HttpGet]中,可能不需要。这是从表单中读取值

 UpdatePartialViewList(int.Parse(Collection["RES_VID"]));
在要显示局部视图的“创建视图”屏幕上

        <div class="col-sm-6">

            <div class="form-horizontal" style="display:none" id="PV_WidgetList">

                @{ Html.RenderAction("UpdatePartialViewList");}



            </div>
        </div>
这不是最好的方法,但这是一个完整的测试答案,因为它的工作,这是每个步骤的过程中,希望没有

还有一个必须经历多日的恐怖表演,我必须经历,才能得到一些最初基于我所认为的错误的东西

这不能在mvc中完成,我将不得不在webforms中继续使用该应用程序。再次感谢所有帮助我制定此计划的人


解决方案!

您好,谢谢您的帮助。我尝试的是在选择下拉列表时更新“创建”视图上的部分视图。因此,如果您在用户单击下拉列表中的某个值时想到webforms,您可以根据该选择使用一些值更新列表控件。我希望通过h mvc应用程序。另一个线程上的答案非常混乱,因为它没有显示列表为空或更新时会发生什么。因此,我可能会混合使用做同样事情的方法。此外,如果id需要来自下拉列表,它将如何引用?好的,感谢viewbag信息,因此此用户必须有更复杂的操作关于他是如何获得viewbag数据的,以使其与点(.)一起工作的partialview…你知道一种简单的方法来获取部分视图吗?我目前正在阅读这篇文章,但它技术性很强…我很难理解它。好的。编辑你的问题并显示“创建视图”的完整代码,以及你的“下拉列表”在哪里,并显示部分视图“UpdatePoints”和“UpdateList”。我会尽力帮忙的。嗨@Konstantine Zikevich。。。我的辍学不是问题。。。这是局部视图,谢谢!
    private List<DB_LIST_FULL> Get_List(int? VID)
    {

        return db.DB_LIST_FULL.Where(i => i.A_ID == VID).ToList();
    }
    [HttpGet]
    public ActionResult UpdatePartialViewList(int? VID)
    {           

        ViewBag.AList = Get_List(VID);
        return PartialView("_WidgetListPartial",ViewBag.AList);


    }
   public ActionResult Create(int RES_VID, FormCollection Collection, [Bind(Include = "... other form fields
 UpdatePartialViewList(int.Parse(Collection["RES_VID"]));
        <div class="col-sm-6">

            <div class="form-horizontal" style="display:none" id="PV_WidgetList">

                @{ Html.RenderAction("UpdatePartialViewList");}



            </div>
        </div>
    $(document).ready(function () {
        $('#RES_VID').change(function ()
        {

            debugger;

            $.ajax(

                {
                    url: '@Url.Action("UpdatePartialViewList")',
                    type: 'GET',
                    data: { VID: $('#RES_VID').val() },

                    success: function (partialView)
                    {
                        $('#PV_WidgetList').html(partialView);
                        $('#PV_WidgetList').show();
                    }
                });