2017-01-31 1 views
1

Я использую Ajax.BeginForm на моем частичном представлении, чтобы отправить данные.MVC - Trigger отправить событие частичного просмотра в главном окне с помощью JQuery

Частичный вид - _getCategoryMaster.cs

<div> 
    @using (Ajax.BeginForm("Submit", "CategoryMasterDataEntry", new AjaxOptions { OnSuccess = "OnDatatSuccess", OnFailure = "OnDataFailure", HttpMethod = "POST" }, new { enctype = "multipart/form-data" })) 
    { 
      <div style="float:left;width:100%;"> 
       <hr class="horizontal-line-bottom" /> 
       <div class="form-buttons tab-footer"> 
        <button class="btn btn-md" type="submit" id="saveData" @if (TempData["DisplayAccess"].ToString() == "view") { <text> disabled </text> }>SAVE</button> 
       </div> 
      </div> 
    } 
</div> 

Теперь я пытаюсь вызвать это представить событие из моего родительского вида на события нажатия на ссылку с Jquery

Parent View -

<html> 
<head> 
<script type="text/javascript"> 
$(document).on('click', '.getProducts', function (e) { 
     alert("Start"); 

     $('form#ajaxForm').trigger('submit'); 

     alert("End"); 
</script> 
</head> 
<body> 
<a id="anchId" href="javascript:void(0);" class="getProducts"> 
<img src="~/Images/bullets.png" class="bullet-image" /> 
    <span class="menu-text">LinkName</span> 
    </a> 
</body> 
</html> 

Но это не стрельба, которая передает событие частичного просмотра. Я получаю эти предупреждения (начало и конец). Но его не увольняют, чтобы отправить мероприятие.

Что я здесь делаю неправильно?

ответ

3

У вас нет формы с id="ajaxForm". Заменить new { enctype = "multipart/form-data" } (который не имеет смысла, так как вы не можете передавать файлы с помощью Ajax.BeginForm()) с new { id= "ajaxForm" }

@using (Ajax.BeginForm("Submit", "...", new AjaxOptions { ... }, new { id = "ajaxForm" })) 

или просто использовать $('form').trigger('submit');

+0

Thankss много !!!! –

+0

Можете ли вы ответить при использовании 'Ajax.BeginForm', почему' event.stopPropagation(); 'и' e.preventDefault(); 'не работает в' OnBegin = 'return MyBeginFunction (event) "' but 'return false; 'работает. [здесь] (https://stackoverflow.com/a/48203120/2218697) - мой ответ. – stom

+0

@stom, 'OnBegin()' - это функция, вызываемая непосредственно перед фактическим вызовом ajax. Если он возвращает 'false', последующий вызов ajax не выполняется. Нет «события», которое обрабатывается. И в вашем ответе вы не можете вызывать '$ ('Ajax_form'). Trigger ('submit');' inside' OnBegin() '- это создаст бесконечный цикл –

Смежные вопросы