Лучший способ передать значение в MVC - PullRequest
0 голосов
/ 16 июня 2011

Я все еще новичок в MVC, извините, если это очевидный вопрос:

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

Как лучше всего передать это значение на страницу формы?Я не хочу идентифицировать элемент во втором URL-адресе страницы (*).

, поэтому это / Choose-Your-Item / до / погашение / где пользователь видит то, что было выбрано, и заполняет форму. Выбранный элемент отображается и отображается в скрытой форме.

Я думаю, один из вариантов - сохранить в сеансе до перенаправления, но мне было интересноесли был другой вариант.

Я использую MVC3

Ответы [ 3 ]

2 голосов
/ 16 июня 2011

Ответ Дарина Димитрова будет наилучшим, если вам не понадобится выполнять дополнительную обработку перед отображением страницы / redemption / .Если вам требуется дополнительная обработка, вам придется использовать TempDataDictionary для передачи данных между действиями.Значения, хранящиеся в TempDataDictionary, сохраняются для одного запроса, который позволяет передавать данные между действиями, в отличие от значений, хранящихся в ViewDataDictionary, которые можно передавать только из действия в представление.Вот пример ниже:

public ActionResult ChooseYourItem()
{
    return View();
}

[HttpPost]
public ActionResult ChooseYourItem(string chosenItem)
{
    TempData["ChosenItem"] = chosenItem;

    // Do some other stuff if you need to

    return RedirectToAction("Redemption");
}

public ActionResult Redemption()
{
    var chosenItem = TempData["ChosenItem"];

    return View(chosenItem);
}
1 голос
/ 17 июня 2011

Чтобы помочь другим, я решил, что мне нужно, чтобы несколько кнопок отправляли сообщения назад и каждый раз передавали другой идентификатор.

У меня есть одна форма на странице, которая отправляет сообщения обратно намой контроллер:

Форма:

        @using (Html.BeginForm("ChooseYourItem", "Item", FormMethod.Post))
        {

И код

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult ChooseYourItem(string itemId)
    {
        TempData["ITEMID"] = itemId

        return RedirectToAction("Create", "Redemption");
    }

Тогда внутри формыЯ создаю кнопки, чье имя == " itemId ", но каждый раз имеет другое значение.

Например,

<strong>Item 1</strong>
<button value="123" name="itemid" id="btn1">Select</button>

<strong>Item 2</strong>
<button value="456" name="itemid" id="btn2">Select</button>
1 голос
/ 16 июня 2011

Если вы не хотите, чтобы выбранное значение в URL-адресе вы могли использовать форму POST. Таким образом, вместо перенаправления на новую страницу, вы можете POST к ней:

@using (Html.BeginForm("SomeAction", "SomeController"))
{
    @Html.DropDownListFor(...)
    <input type="submit" value="Go to details form" />
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...