Переключение между DataContext из View - PullRequest
0 голосов
/ 27 мая 2018

Я работаю над приложением ASP.NET MVC, которое использует 2 разных хранилища данных.Я создал 2 разных контекста для каждого соединения.Я отправил текстовые сообщения по отдельности, и оба прекрасно работают

Контекст 1:

public class DbContextA : DbContext
{
    public DbContextA ()
        : base("name=DbContextA ")
    {
    }

    public virtual DbSet<Producto> Productos { get; set; }
}

Контекст 2:

public class DbContextB : DbContext
{
    public DbContextB ()
        : base("name=DbContextB ")
    {
    }

    public virtual DbSet<Producto> Productos { get; set; }
}

Теперь я хочу переключаться между обоими контекстами изПосмотреть.Для этого я создал DropDownList в виде:

@using (Html.BeginForm())
{
    <p>Please select the data storage mode:</p>
    <div>
        <select id="StorageTypes" name="StorageTypes">
            <option value="1">Storage 1</option>
            <option value="2">Storage 2</option>
        </select>
        <input type="submit" value="Accept" />
    </div>
}

Но я не знаю, как заставить их работать, как я ожидал, я попытался из контроллера, как показано ниже:

    private DbContextA db1 = new DbContextA();
    private DbContextB db2 = new DbContextB();
    private string selStorageValue;

    // GET: Home
    public ActionResult Index()
    {
        if(ViewData["Context"] != null)
        {
            if (ViewData["Context"].ToString() == "1")
            {
                var context = db1;
                return View(context.Productos.ToList());
            }
            else if (ViewData["Context"].ToString() == "2")
            {
                var context = db2;
                return View(context.Productos.ToList());
            }
            else
            {
                var context = db1;
                return View(context.Productos.ToList());
            }
        } else
        {
            var context = db1;
            return View(context.Productos.ToList());
        }

    }

    [HttpPost]
    public ActionResult Index(FormCollection form)
    {
        selStorageValue = form["StorageTypes"].ToString();
        ViewData["Context"] = selStorageValue;

        return View("Index");
    }

Но я не знаю, как это сделать.Буду признателен за любую помощь!

Ответы [ 2 ]

0 голосов
/ 27 мая 2018
        [HttpPost]
        public ActionResult Index(FormCollection form)
        {
            private DbContextA db1 = new DbContextA();
            private DbContextB db2 = new DbContextB();
            string selStorageValue = form["StorageTypes"];
        // Assuming selStorageValue has some value.
            ViewBag.Productos = null;
            if (selStorageValue != null)
            {
                if(selStorageValue.ToString()=="1"){
                    ViewBag.Productos=db1.Productos.ToList();

                }
                else if(selStorageValue.ToString()=="2"){
                    ViewBag.Productos=db2.Productos.ToList();

                }
            }
            else{
                 ViewBag.Productos=db1.Productos.ToList();

            }
            return View(); //View must be binded

       }

Вид

    @{
       ViewBag.Title = "Title";
       Layout = " layout File address";
       List<Producto> ProductoList = (List<Producto>)ViewBag.Productos;
     }

Теперь у вас есть список Productos, теперь используйте тот способ, который вы хотите реализовать в своем представлении.Например, чтобы создать поле выбора

<div id="someId">
  @Html.DropDownList("Productos", 
                     new SelectList
                     (
                       ProductoList, "ProductoId", "ProductoName"
                     ), 
                     new { @class = "form-control" })

</div>
0 голосов
/ 27 мая 2018

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

Но что касается вашего вопроса, я бы посоветовал вам попробовать разбить проблему на мелкие кусочки .Когда вы отлаживаете действие Index(), вы получаете что-нибудь в ViewData["Context"]?Если нет, то это ваша первая маленькая проблема .Сначала исправьте это.

Как только вы преодолеете это, создайте следующую маленькую проблему.

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