Javascript 在MVC5中更新局部视图
尝试加载应在MVC应用程序的“创建”视图上显示列表的局部视图时出错。该列表基于一个值,该值将来自下拉控件中的值列表 在创建视图上没有选择,因此列表为空,在用户在MVC创建视图中选择值后需要刷新 我按照公认的答案回答了这个问题,发现了错误: 但是我有一些关于所说内容的问题 有人说:“有一些方法可以做到这一点。例如,你可以使用jQuery:”他展示了Java查询 但他也展示了另一种方法,并说:“如果您在action UpdatePoints()中使用逻辑来更新点” 我得到以下错误 参数字典包含“System.Controllers.RController”中方法“System.Web.Mvc.ActionResult UpdateList(Int32)”的不可为null类型“System.Int32”的参数“ID”的null条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。参数名称:参数 我不知道这个错误是什么意思 因此,在创建视图中: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
<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();
}
});