Предварительно заполнить Создать представление - PullRequest
1 голос
/ 02 декабря 2011

После выбора владельца учетной записи я хочу предварительно заполнить свой вид создания заказа со свойствами выбранного владельца учетной записи.

Мое действие контроллера на данный момент:

    [HttpPost]
    public ActionResult Create(FormCollection values)
    {
        var accountHolder = from a in unitOfWork.AccountHolderRepository.Get(includeProperties: "AccountHolder")
                            where a.CustSName == values["Name"]
                            select a;

        foreach (var a in accountHolder)
        {
            ViewBag.CustFName = a.CustFName;
            ViewBag.CustSName = values["Name"];
            ViewBag.CustPhone = a.CustPhone;
            ViewBag.CustEmail = a.CustEmail;
        }

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

Ответы [ 2 ]

0 голосов
/ 02 декабря 2011

Поскольку вы вызываете RedirectToAction для контроллера ордеров, я предполагаю, что вы сейчас находитесь в методе Create accountholderController?

В чем конкретно заключается ваш вопрос?Без подробностей я не смогу вам сильно помочь.

Хотя некоторые примечания:

Попробуйте искать владельца аккаунта по его идентификатору в базе данных, а не по имени.Теперь вы доверяете своему конечному пользователю ввод имени владельца учетной записи точно так, как оно введено в базе данных (тот же случай, та же пунктуация).Идентификаторы более точны и требуют меньше усилий, чтобы получить права.

Зачем использовать метод Post-Create, если все, что вам нужно, это выбрать владельца учетной записи из списка и затем открыть представление Create?Было бы намного разумнее иметь выпадающий список, содержащий всех владельцев аккаунтов на вашей главной странице (или там, где вы хотите разместить их).что-то вроде

<select name="accountholderID">
    <option value:"ID_of_accountholder">Name_of_accountholder</option>
    ...
</select>

Добавьте кнопку рядом с этим.После того, как выбран владелец аккаунта и нажата кнопка, вызовите ваш метод (Get, а не Post) Create в OrderController.Передайте идентификатор владельца в качестве параметра.Ваш метод создания должен выглядеть примерно так:

public ActionResult Create(string accountholderID)
{
    int ID = Convert.ToInt32(accountholderID);

    ViewData["Accountholder"] = database.tbl_Accountholders.SingleorDefault(x=> x.Id == ID);

    ...

А в представлении создания просто получите доступ к значениям своего владельца аккаунта, например, так:

<% var accountholder = (accountholdertype)ViewData["Accountholder"]; %>

<span> Name is <%: accountholder.Name %> </span>

Я думаю, это должно привести вас туда, куда вы хотитебыть: -)

0 голосов
/ 02 декабря 2011

Не уверен, правильно ли я понимаю, что вы пытаетесь сделать здесь.Я предполагаю:

  1. Отображение пустой формы Создать
  2. Пользователь предоставляет значение для AccountHolder (происходит автоматическая отправка?)
  3. Вы возвращаете предварительно заполненную форму
  4. Завершающий шаг создания для сохранения значений в базе данных

Я прав?

Если это так, создайте экземпляр модели / модели представления, которую вы используете в своей форме создания (выиспользуя строго типизированное представление, верно?) и верните его так:

return View(yourobject); //Assuming the first view returned by GET request to Create action has all the properties in place

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

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