Как я могу нажать на контроллер, используя форму частичного просмотра, которая имеет другой тип формы (ajax и начальную форму)

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

Когда я нажимаю кнопку загрузки в частичном представлении, он переходит к контроллеру 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)
 {
 }

person Mr Junior    schedule 18.01.2017    source источник
comment
вложенных форм не должно быть в html   -  person Ehsan Sajjad    schedule 18.01.2017
comment
тогда как мне передать свои функции контроллеру или установить связь с контроллером.   -  person Mr Junior    schedule 18.01.2017
comment
Кажется, вы хотите загрузить файл на сервер через AJAX, а затем сохранить заметки через основную форму. Я бы рекомендовал использовать FormData и опубликовать файл через AJAX. Удалите ‹форму› из частичного представления. Дайте мне знать, если вам нужен код для этого   -  person K D    schedule 18.01.2017
comment
@KD, можешь показать мне, отредактировав мой код?   -  person Mr Junior    schedule 18.01.2017
comment
Я думаю, что ваш подход неверен. У вашего основного есть форма, а у вашего частичного, который отображается в нем, есть еще одна. Итак, наконец, вы визуализируете одну форму внутри другой. Вы можете попытаться отобразить только одну форму и использовать атрибут formaction, чтобы решить, какой метод вы будете использовать в контроллере.   -  person Elias MP    schedule 18.01.2017
comment
@EliasMP, не могли бы вы показать мне, как я могу это сделать, исправив свой код, чтобы я тоже мог учиться на нем?   -  person Mr Junior    schedule 18.01.2017


Ответы (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, и он будет выполнять ваши действия. Я думаю, загрузить новые значения для этих данных.

Надеюсь, это поможет. Дай мне знать о любых сомнениях. Здоровья, приятель.

person Elias MP    schedule 18.01.2017
comment
что такое @if(ViewBag.Control) что такое? это имя контроллера? - person Mr Junior; 18.01.2017
comment
Нет, это небольшой контейнер для данных, которые вы можете отправлять с вашего контроллера вместо передачи данных с помощью модели. Есть три его типа. ViewData, ViewBag и временные данные. Они используются для таких целей... Проверьте Google, приятель... ;) - person Elias MP; 18.01.2017
comment
Кстати, не могли бы вы вознаградить мои усилия и оценить мой ответ? Здоровья дружище :) - person Elias MP; 18.01.2017
comment
Рад помочь вам сдружиться. Удачного кодирования :) - person Elias MP; 18.01.2017