【问题标题】:MVC partial view not staying on tesame page after post发布后 MVC 部分视图不停留在 tesame 页面上
【发布时间】: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


【解决方案1】:

我能够通过将@onchange = "this.form.submit();" 替换为@onchange = "$(this).parents('form').submit();" 来解决此问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    相关资源
    最近更新 更多