2017-01-18 6 views
1

У меня есть основная форма, которая отображает div на частичный вид. Я очень хорошо загружаю контрольные файлы. На основной форме У меня есть контроллер, который получил функцию, которая должна получить данные из формы частичного просмотра, когда я нажимаю кнопку на частичном изображении, она не попадает в контроллер (SaveSMRNotesFile).Как я могу нажать на контроллер, используя форму Partial View, которая имеет другой тип формы (ajax и начало формы)

Когда я нажимаю кнопку загрузки с частичного просмотра, он переходит к контроллеру SearchUploadNotes, если я помещаю точку останова, и это не тот, который я хочу.

Как я могу передать данные контроллеру с частичным представлением?

Главная форма

@using (Ajax.BeginForm("SearchUploadNotes", "UploadNotes", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "dvUploadNotes" }, new { @class = "form-horizontal", role = "form" })) 
{ 

<div id="divControlls"> 
    @{Html.RenderPartial("_UploadNotesControllsGridPartialV", new TTAF.Portal.Parts.Web.Models.UploadNotesFolder.UploadNotesViewModel());} 
</div> 


<button class="btn btn-primary " id="btnSearch" name="submit" type="submit">Search</button> 
} 

Частичный вид функции

@using (Html.BeginForm("SaveSMRNotesFile", "UploadNotes", FormMethod.Post, new { enctype = "multipart/form-data", @class = "form-horizontal" , @id = "form-id", role = "form" })) 
{ 
<button class="btn btn-primary " id="btnn" name="submit" type="sumbit" onclick="">Upload</button> 
} 

Контроллер

[HttpPost] 
public ActionResult SaveSMRNotesFile(UploadNotesViewModel mymodel) 
{ 
} 
+0

Вложенные формы не должны находиться в html –

+0

, то как я могу передать свои функции контроллеру или установить связь с контроллером. –

+0

Кажется, вы хотите загрузить файл на сервер через AJAX, а затем сохранить заметки через основную форму. Я бы рекомендовал использовать FormData и опубликовать файл через AJAX. Удалите

с вашего частичного просмотра. Дайте мне знать, если вам нужен код для этого –

ответ

1

подход к вашей проблеме может быть:

Главная форма

**@using (Ajax.BeginForm("SearchUploadNotes", "UploadNotes", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "dvUploadNotes" }, new { @class = "form-horizontal", role = "form" })) 
{ 

@if(ViewBag.Control){ 
    <div id="divControlls"> 
     @{Html.RenderPartial("_UploadNotesControllsGridPartialV", new TTAF.Portal.Parts.Web.Models.UploadNotesFolder.UploadNotesViewModel());} 
    </div> 
    } 

<input class="btn btn-primary " id="btnSearch" value="Search" type="submit" formaction="SearchUploadNotes"> 
} 

Частичный вид функции

<!-- RENDER YOUR DIFFERENT DATA AFTER YOUR SEARCH --> 

    <input class="btn btn-primary " id="btnn" value="Upload" type="sumbit" formaction="SaveSMRNotesFile"/> 

Контроллер

[HttpPost] 
    public ActionResult SaveSMRNotesFile(UploadNotesViewModel mymodel) 
    { 
// DO YOUR STUFF COMING FROM THE DATA RECOVERED OF YOUR FORM IN A UploadNotesViewModel OBJECT 
    } 
    [HttpPost] 
    public ActionResult SearchUploadNotes(UploadNotesViewModel mymodel) 
    { 
    // DO YOUR STUFF COMING FROM THE DATA RECOVERED OF YOUR FORM IN A UploadNotesViewModel OBJECT. RETURNS YOUR DATA AFTER THE SEARCH AND RETURN A VIEWDATA.CONTROL BOOL FOR RENDERING YOUR PARTIAL. 
    } 

Идея, насколько я получил от вашего поста (извините за мой английский :)):

Вы будете отображать только форму с кнопкой поиска, если она нажата, вы окажете частичную, ViewData.Control, с данными поиска плюс новая кнопка отправки для загрузки.

Эта кнопка вызывает в том же контроллере, но другой метод, определенный для атрибута formaction, называется SaveSMRNotesFile, и он будет делать ваши вещи. Я предполагаю загрузить новые значения для этих данных.

Надеясь, что это поможет. Дайте мне знать какие-либо сомнения. Приветственный помощник.

+0

Что такое @if (ViewBag.Control), что? это имя контроллера? –

+0

Нет, это небольшой контейнер для данных, который вы можете отправить с вашего контроллера вместо передачи данных с использованием модели. Существует три типа. ViewData, ViewBag и tempdata. Они используются для такого рода пурпурных изделий ... Проверьте google mate ...;) –

+0

Кстати, можете ли вы вознаградить мой блеск и оценить мой ответ? Cheers mate :) –