2016-03-08 3 views
2

Добрый день У меня есть страница индекса, на которой отображаются 2 частичных изображения на 2 вкладках. На каждой вкладке есть кнопка отправки на нее, когда нажата кнопка отправки, она попадает на контроллер, а контроллер выполняет некоторый процесс и возвращает заполненную модель для этого частичного просмотра, но частичное представление - это renderd как представление самостоятельно.MVC Partial View render as a view после публикации

Index.chtml страница

... 
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-3" style="float:left"> 
    <div > 
     <ul id="myTab" class="nav nav-tabs nav-stacked"> 
      <li class="active"> 
       <a href="#IdentifyPerson" data-toggle="tab" class=""><strong>Identify Person</strong></a> 
      </li> 
      <li> 
       <a href="#PersonInformation" data-toggle="tab" class=""><strong>Person Information</strong></a> 
      </li> 
     </ul> 
    </div> 
</div> 

<div class="tab-content col-lg-9 col-md-9 col-sm-9 col-xs-9"> 
    <div id="IdentifyPerson" class="tab-pane fade in active"> 
     @Html.Partial("IdentifyPerson") 
    </div> 
    <div id="PersonInformation" class="tab-pane fade"> 
     @Html.Partial("PersonInformation") 
    </div> 
</div> 

HomeCntroller.cs страница

[AuthorizeUser] 
    public ActionResult Index(string ActionValue) 
    { 
     return View(); 
    } 

    [HttpGet] 
    [AuthorizeUser] 
    public ActionResult IdentifyPerson() 
    { 
     return View(); 
    } 

    [HttpPost] 
    [AuthorizeUser] 
    public ActionResult IdentifyPerson(ViewModel_IdentifyPerson model) 
    { 
     // do populate model 
     return View(model); 
    } 

любые советы по решению этой?

Определение Person страницы Identify Person

Person страница Информация Person Information here

+1

Вы должны использовать Ajax, чтобы отправить форму, если вы хотите, чтобы остаться на той же странице. –

+0

это то, что он должен делать. Используйте 'ajax' не' form submit' – shu

+0

ok thanx, но можете ли вы использовать ajax на странице бритвы – ArnoDT

ответ

1

вы можете использовать формы, а не Аякс формы. поэтому вам нужно использовать ajax-форму, чтобы оставаться на одной странице.

В IdentifyPerson Вкладка

@using (Ajax.BeginForm("IdentifyPerson", "Home", null, new AjaxOptions { UpdateTargetId = "IdentifyPerson" , InsertionMode= InsertionMode.Replace})) 
{ 
    //Other stuff 
    <input type="submit" value="Save" /> 
} 

и В PersonInformation вкладке

@using (Ajax.BeginForm("IdentifyPerson", "Home", null, new AjaxOptions { UpdateTargetId = "PersonInformation", InsertionMode = InsertionMode.Replace })) 
{ 
    //Other stuff 
    <input type="submit" value="Save" /> 
} 

вам необходимо включить этот Js файл <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> на ваш взгляд , а также изменить тип возвращаемого PartialView к в действии

[HttpPost] 
    [AuthorizeUser] 
    public ActionResult IdentifyPerson(ViewModel_IdentifyPerson model) 
    { 
     // do populate model 
     return PartialView(model); 
    } 
+0

Я выполнил ваши рекомендации, но я все равно получаю тот же результат – ArnoDT

+0

@ArnoDT: вам нужно включить этот JS-файл '' на ваш view –

+0

Я включил его, но теперь я получаю необработанный HTML без каких-либо CSS и любого другого скрипта. – ArnoDT

0

Если вы используете загрузчик, Вы можете просто обернуть форму в окне модальное Bootstrap как частичный вид

+0

Я использую bootstrap в качестве моего базового файла CSS, как мне реализовать этот – ArnoDT

+0

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

+0

для него должна быть страница с вкладками, я думаю, потому что страница одна получает пользовательский ввод, тогда этот вход используется, чтобы попасть в db, а затем результат отображается на на первой странице, и он заполняет модель для второй страницы. после этого нужно активировать другие вкладки, тогда вы должны иметь возможность перейти на первую страницу, не вводя снова информацию – ArnoDT