2015-08-25 2 views
0

У меня есть вид, и я хочу отобразить определенный частичный размер зависит от размера окна.MVC4 Render Html.Partial, основанный на разрешении экрана

The View выглядит:

@using (Html.BeginForm("Index", "search", FormMethod.Get)) 
{ 
     @Html.Partial("_Search") 

     <div class="searchmob" style="display: none;"> 
       <h1>mobile</h1> 
       @Html.Partial("_SearchComponentMobile") 
     </div> 
} 

по умолчанию ДИВА searchmob невидимо и при изготовлении экрана меньше появляется ДИВ (он работает)

Проблема оба парциальных содержат текстовое поле @Html. TextBox с тем же именем, поэтому при отправке из _SearchComponentMobile он отправляет значение текстового поля _Search.

Возможно ли при необходимости произвести частичную обработку.

я использовал в одном из моих взглядов ниже кода, но в приведенном выше насыщении она связана с КАС, надеялся, что-то подобное может быть достигнуто:

@{ 
    var act = ViewContext.RouteData.Values["action"].ToString().ToUpper(); 
} 

@if (@act == "INDEX") 
{ 
     //render a partial view otherwise it doesn't 
} 

Я использую самозагрузки, возможно, это также может помочь меня?

ответ

1

Вы пробовали использовать DisplayModeProviders, встроенный в MVC? По сути, механизм просмотра будет искать «переопределения» ваших просмотров, если запрос поступает с мобильной платформы.

Так ваш главный вид будет выглядеть так:

@using (Html.BeginForm("Index", "search", FormMethod.Get)) 
{ 
    @Html.Partial("_Search") 
} 

Затем переименовать _SearchComponentMobile.cshtml в _Search.mobile.cshtml и пусть MVC позаботится об остальном (обратите внимание, вам нужно переместить вас <div class="searchmob"> в парциальное, если он имеет стиль связанные с ним)

Более подробную информацию здесь, если вам это нужно:


EDIT

В противном случае повторяют форму внутри мобильного макета ....

@using (Html.BeginForm("Index", "search", FormMethod.Get)) 
{ 
    @Html.Partial("_Search") 
} 

<div class="searchmob" style="display: none;"> 
    <h1>mobile</h1> 
    @using (Html.BeginForm("Index", "search", FormMethod.Get)) 
    { 
     @Html.Partial("_SearchComponentMobile") 
    } 
</div> 
+0

проблема с этим, если пользователь делает экран меньше на на рабочем столе мне нужно отобразить правильное частичное, а с помощью DisplayModeProviders оно работает только в том случае, если используется мобильное устройство. – Ben

+0

@ Если вы используете полностью отзывчивый макет на рабочем столе, то ваше решение, скорее всего, будет ориентировано на CSS. Вам нужно будет проанализировать различия в разметке и CSS между макетами рабочего стола и мобильного поиска. Основываясь на том, что вы показали нам, разметка должна быть схожей (оба окна поиска отображаются в одном регионе), поэтому выясните, какие различия в CSS и выработайте стиль для обоих макетов, а не просто скрывать/показывать коробка. –

+0

@ В противном случае см. Мое редактирование для другого быстрого исправления –