【发布时间】:2016-04-16 11:00:30
【问题描述】:
我目前正在使用 MVC 开发一个网站,但遇到了一些问题
我想要达到的目标:
当在 DropDownListFor 中选择一个项目时,它会执行表单。提交并转到 RecipeController 帖子“AddIngredient”,在此 HttpPost 中,我添加了将成分插入 SelectedIngredients 列表的逻辑。该列表随后将用于绑定到 ListboxFor。
我遇到了什么问题:
当点击 DropDownListFor 中的某个项目时,它成功提交表单并转到 HttpPost,问题是在执行帖子后它转到 /Recipe/AddIngredient/ 并且不停留在提交视图上
我的代码:
提交.cshtml:
<div class="submit-recipe-form">
<div class="add-ingredient">
@Html.Partial("_AddIngredient");
</div>
_AddIngredient.cshtml(部分视图):
@model Recepten.Models.IngredientSelectModel
@using (Ajax.BeginForm("AddIngredient", "Recipe", new AjaxOptions() { UpdateTargetId = "add-ingredient", HttpMethod = "Post" }))
{
@Html.LabelFor(model => model.Ingredients, "Add Ingredient")
@Html.DropDownListFor(model => model.SelectedIngredient, Model.Ingredients, new { @onchange = "this.form.submit();" })
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
配方控制器:
[HttpPost]
public ActionResult AddIngredient(IngredientSelectModel ing)
{
//Logic
return PartialView(ing);
}
成分选择模型:
public class IngredientSelectModel
{
public RecipeModel Recipe { get; set; }
public IEnumerable<SelectListItem> Ingredients { get; set; }
public int SelectedIngredient { get; set; }
public string addIngredient { get; set; }
public List<int> SelectedIngredients { get; set; }
public IngredientSelectModel()
{
SelectedIngredients = new List<int>();
}
}
我已安装包 jquery unobtrusive ajax 并在我的包中正确列出,我希望我在 HttpPost 中的视图中遗漏了一些东西,但不确定到底是什么。
感谢您的宝贵时间!
编辑:
提交.cshtml http://pastebin.com/yS8etDK5
【问题讨论】:
-
如果它显示部分内容或停留在同一页面上,则意味着
jquery.unobtrusive-ajax.js未加载到视图中(或者您有一些无效的内容,例如嵌套表单) -
您是否尝试在局部视图中删除“@section Scripts {@Scripts.Render("~/bundles/jqueryval") }”部分?也许这部分导致错误。
-
imgur.com/qLraBOV 如图所示 jquery.unobtrusive-ajax.js 似乎已加载到视图中,我也尝试删除 @Scripts.Render("~/bundles/jqueryval") 和而是在我的提交视图中分配它,但这不起作用。我会检查我是否有任何嵌套表单
-
jquery-{version}.js是否也包含在jquery.unobtrusive-ajax.js之前? -
是的,它在我的 _layout.cshtml 页面中使用 @Scripts.Render("~/bundles/jquery") 在提交配方页面上呈现,它显示 src="/Content/Scripts/jquery- 1.11.3.min.js" 以及
标签: asp.net-mvc asp.net-mvc-4 asp.net-ajax