13

कहा जाता है मैं निम्नलिखित सूचकांक दृश्य है:Html.RenderPartial और Ajax.BeginForm -> सबमिट दो बार

@model BoringStore.ViewModels.ProductIndexViewModel 
@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Produkte</h2> 

<div id='addProduct'> 
    @{ Html.RenderPartial("Create", new BoringStore.Models.Product()); } 
</div> 

<div id='productList'> 
    @{ Html.RenderPartial("ProductListControl", Model.Products); } 
</div> 

"productlist" बस सभी उत्पादों की एक सूची है।

addProduct renders मेरी बनाएं दृश्य:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
<div id="dialog-confirm" title="Produkt hinzufügen" style="display:none"> 
@using (Ajax.BeginForm("Index_AddItem", new AjaxOptions { UpdateTargetId = "productList" })) 
{ 
    @Html.Raw(DateTime.Now.ToString()); 

    <div> 
     @Html.LabelFor(model => model.Name) 
     @Html.EditorFor(model => model.Name) 
    </div> 
    <br /> 
    <div> 
     @Html.LabelFor(model => model.Price) 
     @Html.EditorFor(model => model.Price) 
    </div> 
    <br /><br /> 
    <div> 
     <input type="submit" value="Produkt hinzufügen" /> 
    </div> 
} 

जब पर्चे को जमा करने, मेरे नियंत्रक में Index_AddItem-विधि कहा जाता है। दुर्भाग्य से फॉर्म हमेशा दो बार विधि को कॉल करता है। :(

किसी ने मुझे बाहर करने में मदद कर सकते हैं?

उत्तर

33

अपने आंशिक दृश्य के अंदर स्क्रिप्ट शामिल न करें! वे अपने "मुख्य" विचारों या अपने _layout.cshtml जाना चाहिए।

आपकी समस्या यह है कि आप को शामिल किया है है अपने पृष्ठ में दो बार jquery.unobtrusive-ajax.min.js। एक बार आपके Create आंशिक और एक बार कहीं और। अगर आपको लगता है कि स्क्रिप्ट कई बार शामिल जमा करें घटना पर कई बार सदस्यता ले जाएगा क्योंकि ताकि आप एक क्लिक के साथ प्रस्तुत एकाधिक मिल जाएगा।

तो में सुनिश्चित करें कि आपने उस एससी को शामिल किया है एक पृष्ठ में केवल एक बार रिप्लाई। तो अपने सूचकांक दृश्य में jquery.unobtrusive-ajax.min.js संदर्भ को ले जाएं।

+0

आप सही हैं- मैंने इसे दो बार शामिल किया था। :( – mosquito87

+3

क्या होगा यदि आपके पास आंशिक दृश्य के अंदर एक अजाक्स लिंक है? Jquery.unobstrusive-AJAX का पहला समावेशन लिंक पंजीकृत नहीं करता है। – allenylzhou

+0

मेरे पास jundery- {version} .js मेरे बंडल कॉनफिग में दो बार था - एक बार मेरे नीचे jquery बंडल और एक बार AJAX बंडल के तहत। यह मेरे लिए एक ही मुद्दा पैदा हुआ। तो मुझे सही रास्ते पर रखने के लिए धन्यवाद! – Arwin

संबंधित मुद्दे