部分视图仅在部分视图中包含.js文件时有效

时间:2014-11-20 16:40:25

标签: javascript jquery ajax asp.net-mvc asp.net-mvc-4

所以我在一个页面上有三个部分视图,它们执行创建,更新和删除功能。

<div id="create-example">
    @Html.Action("OrderCreate","Home")
</div>

<div id="update-example">
   @Html.Action("OrderUpdate","Home")
</div>

<div id="delete-example">
   @Html.Action("OrderDelete","Home")
</div>

如果我在每个部分视图中包含jquery.unobtrusive-ajax.js和jquery.validate.js,那么AJAX表单在所有部分视图中都成功运行,但是因为我刷新所有3个(onsuccess),所以调用.js文件多次导致多次创建/更新/删除。

现在我知道你应该只加载一次文件,但当我把它们放在我的_Layout.cshtml文件中时,它们不会被加载,当我提交其中一个部分视图表单时,它仍然可以工作但不会保留同一页面并转到控制器/操作页面。

下面是创建局部视图(仅通过直接在AJAX表单中包含js脚本来工作)

@model EntityFrameworkTutorial.Models.OrderViewModel
@{ var quantities = new SelectList(Enumerable.Range(1, 10)); }


@using (Ajax.BeginForm("OrderCreate", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "create-example", InsertionMode = InsertionMode.Replace, OnSuccess="RefreshCRUD" }))
{
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>

<br />
<label for="Order_OrderCustomerID" class="col-sm-2 control-label">Customer</label>
@Html.DropDownListFor(m => m.Order.OrderCustomerID, Model.CustomerList)

<br /><br />
<label for="Order_OrderProductID" class="col-sm-2 control-label">Product</label>
@Html.DropDownListFor(m => m.Order.OrderProductID, Model.ProductList)

<br /><br />
<label for="Order_OrderQuantity" class="col-sm-2 control-label">Quantity</label>
@Html.DropDownListFor(m => m.Order.OrderQuantity, quantities)

<br /><br />
<input type="submit" class="btn btn-default btn-lg" value="Create Order" />

}

-------

刚尝试添加

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

在每个局部视图中,它解决了在_Layout中仅加载.js文件一次但是当我创建订单时,仍会创建多个订单!!

有什么想法吗?

0 个答案:

没有答案