Двойная ссылка на Scripts.Render("~/bundles/jqueryval") заставит Ajax.BeginForm отправлять два почтовых запроса при отправке моего частичного просмотра.
Я работаю над веб-приложением asp.net MVC, и у меня есть следующий основной вид:-
@model TMS.ViewModels.VMJoin
//code goes here
<p>
@Ajax.ActionLink("Add Network Info", "CreateVMNetwork","VirtualMachine",
new { vmid = Model.VirtualMachine.TMSVirtualMachineID },
new AjaxOptions {
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "AssignNetwork" ,
LoadingElementId = "progress"
}
)
</p>
<p><img src="~/Content/Ajax-loader-bar.gif" class="loadingimage" id="progress" /></p>
<div id ="AssignNetwork"></div>
<div id ="CreateEditNetwork"></div>
<table class="table table-striped table-bordered bootstrap-datatable datatable">
<thead>
<tr>
<th class="f"> IP Address </th>
<th class="f"> MAC Address </th>
</tr></thead>
<tbody id="networktable">
@foreach(var info in Model.VirtualMachine.Technology.TechnologyIPs){
<tr id="@info.ID">
<td> @info.IPAddress</td>
<td>@info.MACAddress</td>
<
</tr>
}
</tbody>
</table>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Который будет отображать следующее частичное представление при нажатии на ссылку "Добавить информацию о сети":-
@model TMS.ViewModels.AssignIps
@if (this.ViewContext.FormContext == null)
{
this.ViewContext.FormContext = new FormContext();
}
@using (Ajax.BeginForm("CreateVMNetwork", "VirtualMachine", new AjaxOptions
{
InsertionMode = InsertionMode.InsertAfter,
UpdateTargetId = "networktable",
LoadingElementId = "loadingimag",
HttpMethod= "POST",
OnSuccess="submitform"
}))
{
@Html.ValidationSummary(true)
@Html.HiddenFor(model=>model.TechnologyIP.TechnologyID)
@Html.AntiForgeryToken()
<div>
<span class="f">IP Address</span>
@Html.EditorFor(model => model.TechnologyIP.IPAddress)
@Html.ValidationMessageFor(model => model.TechnologyIP.IPAddress)
<input type="CheckBox" name="IsTMSIPUnique" value="true" @(Html.Raw(Model.IsTMSMACUnique ? "checked=\"checked\"" : "")) /> IP Unique. |
<span class="f"> MAC Address</span>
@Html.EditorFor(model => model.TechnologyIP.MACAddress)
@Html.ValidationMessageFor(model => model.TechnologyIP.MACAddress)
<input type="CheckBox" name="IsTMSMACUnique" value="true" @(Html.Raw(Model.IsTMSMACUnique ? "checked=\"checked\"" : "")) /> MAC Unique.
</div>
<input type="submit" value="Save" class="btn btn-primary"/>
}
@Scripts.Render("~/bundles/jqueryval")
Но нажатие на кнопку Сохранить внутри моего частичного представления отправит два почтовых запроса методу CreateVMNetwork Actino. Я думаю, что проблема связана с тем, что я ссылаюсь на @Scripts.Render("~/bundles/jqueryval") дважды: один на главном экране, а второй на частичном. Я ссылался на сценарии дважды, потому что; в главном представлении мне нужна функция ajax для ссылки ajax, а в частичном представлении мне нужно проверить поля частичного представления в соответствии с аннотациями данных модели. Так может кто-нибудь посоветовать, как мне преодолеть эту проблему?
Спасибо