2012-02-01 5 views
0

Я следующий сценарий:установленное значение для текстового поля в частичный вид бритвы MVC

Моя страница Index, использует макет, который имеет частичный вид ebbeded в нем. частичный вид содержит текстовое поле поиска.

Для конкретного сценария мне нужно установить текст окна поиска с моими указателями [] для индексной страницы.

это как-то poosiblein mvc3, asp.net 2010, чтобы установить значение текстового поля в частичном виде со страницы просмотра?

ответ

1

Вы можете сделать свой частичный сильно типизированных в какой-то вид модели:

@model SearchViewModel 
@using (Html.BeginForm()) 
{ 
    @Html.LabelFor(x => x.Keywords) 
    @Html.EditorFor(x => x.Keywords) 
    <button type="submit">OK</button> 
} 

, а затем при вставке парциальное вы можете передать этот вид модели:

@Html.Partial("_Search", new SearchViewModel { Keywords = "some initial value" }) 

или даже лучше модели представления о ваш основной вид уже будет иметь свойство типа SearchViewModel, и вы сможете называть частичным вот так:

@Html.Partial("_Search", Model.Search) 
012 не

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

public ActionResult Index() 
{ 
    var model = new MyViewModel 
    { 
     Search = new SearchViewModel 
     { 
      Keywords = "some initial value" 
     } 
    }; 
    return View(model); 
} 
1

Вы всегда можете сделать частичный вид сильно типизированных (даже если модель это просто строка) и передать необходимое вам значение.

public class MyModel 
{ 
    public int ValueForView {get;set;} 
    public string TextBoxValue {get;set;} 
} 

-Index.cshtml

@model MyModel 

@{ Html.RenderPartial("PartialView", Model.TextBoxValue); } 

-PartialView.cshtml

@model string 

@Html.TextBoxFor(m => Model) 
0

Как я понимаю ваш вопрос, частичный вид в макете, и вы должны получить данные в него ,

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

ActionFilters будет работать, но вы могли бы просто обработать Ваш парциальное просто позвонив в макете:

 

@Html.RenderAction("PartialViewAction", "PartialViewController") 
 

Если я что-то не хватает, я не верю, что другие ответы на имя, что это в макете , следовательно, другая проблема.