MVC постоянная модель - PullRequest
       3

MVC постоянная модель

0 голосов
/ 10 февраля 2012

В приложении MVC 3 мне нужно иметь возможность разделить представление создания на 2 разные части из-за некоторой логики создания папки. В первом представлении у меня есть текстовое поле с именем проекта, при нажатии следующей кнопки мне нужно создать папку для этого проекта, и мне нужен способ, чтобы каким-то образом получить папку с именем проекта в моем следующем представлении. Прямо сейчас я нажимаю «Далее» и теряю имя проекта, и я не могу получить его снова. В Интернете есть много мест, где они реализуют это таким же образом, но я не могу понять, как это сделать.

Какие-нибудь решения о том, как создать модель?

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

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

Другая возможность - сохранить значение, которое было введено в первом представлении, где-то на сервере (база данных, сеанс, ...)


UPDATE:

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

Первый просмотр:

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

затем действие контроллера, которому будет представлен этот первый шаг:

[HttpPost]
public ActionResult Foo(FirstStepViewModel model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

    return RedirectToAction("Bar", new { projectname = model.ProjectName });
}

и тогда у вас будет второе действие контроллера, которое будет обслуживать второе представление:

public ActionResult Bar(FirstStepViewModel firstStep)
{
    var model = new SecondStepViewModel
    {
        ProjectName = firstStep.ProjectName
    };
    return View(model);
}

у вас будет соответствующий вид:

@model SecondStepViewModel
@using (Html.BeginForm())
{
    @Html.HiddenFor(x => x.ProjectName)
    @Html.EditorFor(x => x.ProjectFolder)
    <button type="submit">OK</button>
}

, который опубликует последнее действие:

[HttpPost]
public ActionResult Bar(SecondStepViewModel model)
{
    // here you will get both model.ProjectName and model.ProjectFolder
    ...
}
0 голосов
/ 10 февраля 2012

Вы также можете загрузить все части формы одновременно, а затем использовать макет со вкладками (например, jQuery UI Tabs ) и отправить всю форму на последнем этапе.

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