установить значение для текстового поля в частичном представлении бритвы MVC - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть следующий сценарий:

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

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

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

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

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

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)
1 голос
/ 01 февраля 2012

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

@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)

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

public ActionResult Index()
{
    var model = new MyViewModel
    {
        Search = new SearchViewModel
        {
            Keywords = "some initial value"
        }
    };
    return View(model);
}
0 голосов
/ 01 февраля 2012

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

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

ActionFilters будет работать, но вы можете просто обработать свою часть, просто позвонив в свой макет:


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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...